亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JVM內存的概念

發布時間:2020-08-05 14:59:58 來源:網絡 閱讀:306 作者:wxl604746107 欄目:軟件技術
JVM內存的概念

javamemory=directmemory(直接內存)+jvmmemory(MaxPermSize+Xmx)

1)直接內存跟堆
直接內存則是一塊由程序本身管理的一塊內存空間,它的效率要比標準內存池要高,主要用于存放網絡通信時數據緩沖和磁盤數據交換時的數據緩沖。
DirectMemory容量可以通過-XX:MaxDirectMemorySize指定,如果不指定,則默認為與Java堆的最大值(-Xmx指定)一樣。但是,在OSX上的最新版本的JVM,對直接內存的默認大小進行修訂,改為“在不指定直接內存大小時默認分配的直接內存大小為64MB”,可以通過-XX:MaxMemorySize來顯示指定直接內存的大小。
2)堆(Heap)和非堆(Non-heap)內存
按照官方的說法:“Java虛擬機具有一個堆,堆是運行時數據區域,所有類實例和數組的內存均從此處分配。堆是在Java虛擬機啟動時創建的。”“在JVM中堆之外的內存稱為非堆內存(Non-heapmemory)”。
可以看出JVM主要管理兩種類型的內存:堆和非堆。簡單來說堆就是Java代碼可及的內存,是留給開發人員使用的;非堆就是JVM留給自己用的,
所以方法區、JVM內部處理或優化所需的內存(如JIT編譯后的代碼緩存)、每個類結構(如運行時常數池、字段和方法數據)以及方法和構造方法的代碼都在非堆內存中。

3)棧與堆
棧解決程序的運行問題,即程序如何執行,或者說如何處理數據;堆解決的是數據存儲的問題,即數據怎么放、放在哪兒。
在Java中一個線程就會相應有一個線程棧與之對應,這點很容易理解,因為不同的線程執行邏輯有所不同,因此需要一個獨立的線程棧。而堆則是所有線程共享的。棧因為是運行單位,因此里面存儲的信息都是跟當前線程(或程序)相關信息的。包括局部變量、程序運行狀態、方法返回值等等;而堆只負責存儲對象信息。
Java的堆是一個運行時數據區,類的(對象從中分配空間。這些對象通過new、newarray、anewarray和multianewarray等指令建立,它們不需要程序代碼來顯式的釋放。堆是由垃圾回收來負責的,堆的優勢是可以動態地分配內存大小,生存期也不必事先告訴編譯器,因為它是在運行時動態分配內存的,Java的垃圾收集器會自動收走這些不再使用的數據。但缺點是,由于要在運行時動態分配內存,存取速度較慢。
棧的優勢是,存取速度比堆要快,僅次于寄存器,棧數據可以共享。但缺點是,存在棧中的數據大小與生存期必須是確定的,缺乏靈活性。棧中主要存放一些基本類型的變量(,int,short,long,byte,float,double,boolean,char)和對象句柄。
線程占用大小在MaxPermSize中進行內存申請和分配


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太仓市| 皋兰县| 宜黄县| 军事| 元江| 新平| 新绛县| 河津市| 广德县| 云安县| 阿拉善左旗| 深泽县| 清流县| 玛多县| 堆龙德庆县| 临安市| 共和县| 武强县| 古田县| 台州市| 兴山县| 永清县| 威信县| 定州市| 陆河县| 永年县| 泰州市| 乐业县| 阳江市| 安国市| 报价| 屏东县| 中方县| 兴义市| 教育| 宜兴市| 高邮市| 襄汾县| 多伦县| 广元市| 崇州市|