JVM記憶體(執行時資料區)和直接記憶體 概念
JVM記憶體分為5塊,其中1--3為執行緒隔離,4、5為執行緒共享。
執行緒隔離:
1、程式計數器:分支,迴圈跳轉、異常處理、執行緒恢復等作用(唯一一個沒有規定outofmemoryError的記憶體區)。
2、VM stack,虛擬機器棧:主要用來存放區域性變量表(八種基本資料型別,物件引用也就是物件地址)。
3、本地方法棧:與VM stack相似,但不同的是VM stack為JVM執行java方法服務,本地方法棧為JVM執行Native方法服務。
執行緒共享:
4、堆:存放物件例項(垃圾收集器管理的主要區域,也叫GC堆)。
5、方法區:儲存已經被載入的類資訊、常量、靜態變數等。
直接記憶體概念:
不是JVM執行時記憶體,也不是JVM定義的記憶體區域,就是堆外單獨的一塊記憶體區域。
例如:NIO(new input/output),基於通道與緩衝區結合的I/O方式,可以用native函式庫直接堆外分配記憶體,通過一個存 儲在堆中的DirectByteBuffer物件作為這塊記憶體的引用進行操作,這樣能在一些場景中提高效能。
相關推薦
JVM記憶體(執行時資料區)和直接記憶體 概念
JVM記憶體分為5塊,其中1--3為執行緒隔離,4、5為執行緒共享。執行緒隔離:1、程式計數器:分支,迴圈跳轉、異常處理、執行緒恢復等作用(唯一一個沒有規定outofmemoryError的記憶體區)。2、VM stack,虛擬機器棧:主要用來存放區域性變量表(八種基本資料型
JVM(一):Run-Time Data Areas(執行時資料區)/ 記憶體區域
一:前言 特別說明:文章中引用的圖片是通過谷歌的方式找到的,當時並沒有找到圖片是否擁有版權,如果遇到了的話,請告知博主,我會將相應的圖片刪除。 本部落格主要總結的是JVM的Run Time Data Areas(執行時資料區),也就是我們常說的記憶體區域。借
Java記憶體區域(執行時資料區域)和記憶體模型(JMM)
Java 記憶體區域和記憶體模型是不一樣的東西,記憶體區域是指 Jvm 執行時將資料分割槽域儲存,強調對記憶體空間的劃分。 而記憶體模型(Java Memory Model,簡稱 JMM )是定義了執行緒和主記憶體之間的抽象關係,即 JMM 定義了 JVM 在計算機記憶體(RAM)中的工作方式,如果我們要想深
Java記憶體區域(執行時資料區域)和記憶體模型
而記憶體模型(Java Memory Model,簡稱 JMM )是定義了執行緒和主記憶體之間的抽象關係,即 JMM 定義了 JVM 在計算機記憶體(RAM)中的工作方式,如果我們要想深入瞭解Java併發程式設計,就要先理解好Java記憶體模型。 Jav
java JVM的記憶體區域(執行時資料區域)
JVM的記憶體形式: (1)方法區:存放了要載入的類的資訊(名稱,修飾符等)、類中的靜態變數、類中定義為final的變數、類中Field資訊、類中的方法資訊,當開發人員通過Class物件的getName、isInterface方法來獲取資訊時候,這些資訊都來源於方
深入理解JVM(一):執行時資料區
深入理解JVM(一):執行時資料區 執行時資料區 JVM在執行java程式的過程中,會把記憶體分為幾個不同的資料區域,如上圖所示。 程式計數器 雖然圖片中程式計數器所佔的面積比較大,但實際上程式計數器所佔的記憶體非常小,也是唯一一塊在所有JVM中都沒有規定OOM的區
JVM三部曲之執行時資料區 (第一部)
在接下來的幾天想總結下,JVM相關的一些內容,比如下面的這三個內容算是比較核心知識點了 1.執行時資料區域: 在執行時資料區裡儲存類Class檔案元資料(方法區),物件和陣列(堆),方法引數區域性變數(棧)等。 2.垃圾回收機制: java 語言的優勢之一就是它的自動記憶體管理,主要回收執行時資料區域的堆記憶
java記憶體區域----執行時資料區
Java虛擬機器的記憶體區域也叫做java執行時資料區,共分為五個部分:程式計數器,方法區,本地方法棧,虛擬機器棧和堆。方法區和堆是執行緒之間所共有的,程式計數器,本地方法棧,虛擬機器棧是執行緒私有的。其中虛擬機器棧和堆是程式設計師日常談論最多也是最關注的一部分。 程式計數器:程式計數器就是指向當前執行緒要執
Java虛擬機器(JVM原始碼):JDK10對Java虛擬機器執行時資料區的劃分(詳細圖解)
Java虛擬機器執行時資料區 為什麼要研究這個,因為JDK都已經發布到10了,必須要更新自己對Java虛擬機器新的認識。 一、執行時資料區的劃分 1.1 官方劃分 關於JDK10對執行時資料區的劃分,在官方文件說的非常清楚。 學習技術,一定要學會看第一手資料。 Ja
JVM(一):JVM的執行時資料區
由於Java程式是交由JVM執行的,所以我們在談Java記憶體區域劃分的時候事實上是指JVM記憶體區域劃分。在討論JVM記憶體區域劃分之前,先來看一下Java程式具體執行的過程: 如上圖所示,首先Java原始碼檔案(.java字尾)會被Java編譯器編譯為位元組碼檔案(.class字尾),
java記憶體管理機制(一)-執行時資料區
前言 本打算花一篇文章來聊聊JVM記憶體管理機制,結果發現越扯越多,於是分了三遍文章(文章講解JVM以Hotspot虛擬機器為例,jdk版本為1.8),本文為其中第一篇。from java記憶體管理機制(一)-執行時資料區 1、 java記憶體管理機制-執行時資料區
JVM學習筆記(一)執行時資料區
執行時資料區 java虛擬機器在執行java程式的過程中會把所管理的記憶體劃分為若干個不同的資料區域。這些區域都有各自的用途,以及建立和銷燬的時間。 有的區域隨著虛擬機器程序的啟動而存在,隨虛擬機器程序的退出而銷燬; 有的區域則依賴使用者執行緒的啟
《自己動手寫java虛擬機器》學習筆記(七)-----執行緒私有執行時資料區(go)
專案地址:https://github.com/gongxianshengjiadexiaohuihui 在執行java程式時,Java虛擬機器需要使用記憶體來存放各種各樣的資料,Java虛擬機器規範把這些記憶體的區
【JVM之記憶體與垃圾回收篇】執行時資料區概述及執行緒
# 執行時資料區概述及執行緒 ## 前言 本節主要講的是執行時資料區,也就是下圖這部分,它是在類載入完成後的階段 ![](https://img2020.cnblogs.com/blog/1542615/202007/1542615-20200713210432252-2095338296.png)
JVM:jvm執行時資料區
1、程式計數器 程式計數器(Program Counter Register)是一塊較小的記憶體空間,它的作用可以看做是當前執行緒所執行的位元組碼的行號指示器。在虛擬機器的概念模型裡(僅是概念模型,各種虛擬機器可能會通過一些更高效的方式去實現),位元組碼直譯器工作時就是通過改變這個
JVM 執行時資料區詳解
1、PC暫存器(執行緒獨有):全稱是程式計數暫存器,它記載著每一個執行緒當前執行的JAVA方法的地址,如果是當前執行的是native方法,則程式計數器會是一個空地址。它的作用就是用來支援多執行緒,執行緒的阻塞、恢復、掛起等一系列操作。這
執行時資料區組成_深入JVM(一)
執行時資料區 JVM在執行java程式時,會把其所管理的記憶體劃分成多個區域,每個區域都有不同用途,每個區域的建立和銷燬時間也不同.這每塊記憶體都屬於執行時資料區域. 這些區域有程
JVM執行時資料區-堆
基本概念 堆,jvm程序啟動時建立,為jvm程序的所有執行緒共享的區域,所有Java物件和陣列(jdk8+也包含字串常量)均在堆上分配記憶體,所以堆的大小決定了能存放多少Java物件,當堆滿或者無法容納新建立的物件時,則需要通過垃圾收集器進行垃
JVM執行時資料區-方法區
基本概念 在hotspot jvm實現當中,在jdk8以前,方法區的實現為PermGen,即永久代,主要存放類的資訊,方法的資訊,常量池,靜態變數,符號解析;而jdk8+,則去除了PermGen,使用元空間MetaSpace代替,元空間使用的
jvm 執行時資料區、String 常量池
私有 - 程式計數器:記錄當前執行緒所執行位元組碼的行號指示器 - 虛擬機器棧:存放了當前執行緒呼叫方法的區域性變量表、運算元棧、動態連結、方法返回值等資訊(可以理解為執行緒 的棧) - 本地方法棧:為虛擬機器使用的Native方法提供服務 共享 - Java堆