JVM-java内存

Time:2015/04/20 01:24:42   Click:

    續 JVM(java 虛拟機)一  這(zhè)裡(lǐ)繼續對(duì)java做深入的理解。
    從(一)中說(shuō)明了JVM就(jiù)等同于操作系統,我們在學(xué)習操作系統的時(shí)候就(jiù)會(huì)理解内存,那麼(me)JVM也有内存處理嗎?
    其實每個單獨java程序都(dōu)會(huì)啓動一個JVM,同時(shí)也指定JVM的内存大小,所以如果程序太大,就(jiù)會(huì)報錯“java.lang.OutOfMemoryError”。 有事(shì)我們在運行Tomcat中的web程序就(jiù)會(huì)出現這(zhè)個原因,因爲Tomcat默認也是使用的是JVM默認的内存,一般是物理内存的1/4,所以如果是 4G的物理内存,JVM默認最大的使用内存是1G,超過(guò)1G就(jiù)會(huì)報錯。也許我們在用Eclipse的時(shí)候,也會(huì)起(qǐ)動JVM,我們可以看配置文件 eclipse.ini中有

-Xms40m
-Xmx512m

這(zhè)個也就(jiù)是代表我們在起(qǐ)動eclipse的時(shí)候默認啓動内存是40M,最大内存512M,所以我們的eclipse的内存就(jiù)運行在之間。配置JVM一般有四個參數:

-Xmx    Java Heap最大值,默認值爲物理内存的1/4,
        最佳設值應該視物理内存大小及計算機内其他内存開(kāi)銷而定;

-Xms    Java Heap初始值,Server端JVM最好(hǎo)將(jiāng)-Xms和-Xmx設爲相同值,
        開(kāi)發(fā)測試機JVM可以保留默認值;

-Xmn    Java Heap Young區大小,不熟悉最好(hǎo)保留默認值;

-Xss    每個線程的Stack大小,不熟悉最好(hǎo)保留默認值;
我們可以在命令行中來設置運行JAVA的JVM信息。

java -Xmx128m -Xms64m -Xmn32m -Xss16m Test   
這(zhè)裡(lǐ)的Test就(jiù)一個科=可運行的class文件
當然如果用eclipse運行,也可以配置,如下圖:


所以JVM的啓動都(dōu)會(huì)有相應的内存指定。

其實-Xmx的配置不是可以無限的設置的,除了本機的内存還(hái)與系統有關,可以參考jvm在不同系統中的最大内存空間地址  比如在windows下2G的内存最多把-Xmx1500M左右,其實我們一般寫的程序1G的最多空間以足以,空間越大,垃圾回收就(jiù)用時(shí)了,所以按照自己配置-Xmx。

    配置不多說(shuō),前面(miàn)有兩(liǎng)個-Xmn、-Xss還(hái)不知道(dào)是是麼(me)?那我們就(jiù)看一下JVM有哪些分類。我們學(xué)過(guò)操作系統,内存都(dōu)有很多分類寄存器、RAM、ROM、DRAM……到目前我還(hái)是沒(méi)有分清楚,那麼(me)JVM也有内存分類嗎?

    其實JVM也有五個地方可以存儲數據。

一、寄存器,這(zhè)裡(lǐ)是最快的,我們都(dōu)知道(dào)這(zhè)個是CUP中的存儲區域,當然最快。但我們寫JAVA程序就(jiù)不能(néng)控制寄存器,也感覺不到她的存在(c、c++是可以的)。所以在我們編程中與它的關系不大,不過(guò)它的确存在。

二、堆棧,存儲java的一些特殊的對(duì)象。

三、,存儲我們new的對(duì)象,所說(shuō)的垃圾回收,應該就(jiù)是處理這(zhè)個堆把。

四、常量存儲(不懂)

五、非RAM存儲(不懂)

ok,内存值得學(xué)習,一下,繼續研究。


TAG
TOP

錦江區聚格樂享網絡工作室@2012 版權所有
蜀ICP備12016524号-2

立即咨詢
成(chéng)都(dōu)網站建設,成(chéng)都(dōu)做網站,錦江區聚格樂享網絡工作室
40f13d50b73e104f832ed1b719ae6935