JVM內(nèi)存的概念

JVM內(nèi)存的概念

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

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

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


分享標(biāo)題:JVM內(nèi)存的概念
當(dāng)前地址:http://muchs.cn/article26/pgojcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站改版、服務(wù)器托管、全網(wǎng)營銷推廣App開發(fā)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司