本文目錄一覽:
北大青鳥java培訓:增加java堆空間方法?
在大多數32位機、Sun的JVM上,Java的堆空間默認的大小為128MB,但也有例外,例如在32未Solaris操作系統(SPARC平台版本)上,默認的最大堆空間和起始堆空間大小為-Xms=3670K和-Xmx=64M。
對於64位操作系統,一般堆空間大小增加約30%。
但你使用Java1.5的throughput垃圾回收器,默認最大的堆大小為物理內存的四分之一,而起始堆大小為物理內存的十六分之一。
要想知道默認的堆大小的方法,可以用默認的設置參數打開一個程序,使用JConsole(JDK1.5之後都支持)來查看,在VMSummary頁面可以看到最大的堆大小。
用這種方法你可以根據你的程序的需要來改變堆內存大小,我強烈建議採用這種方法而不是默認值。
如果你的程序很大,有很多對象需要被創建的話,你可以用-Xmsand-Xmx這兩個參數來改變堆內存的大小。
Xms表示起始的堆內存大小,Xmx表示最大的堆內存的大小。
另外有一個參數-Xmn,它表示newgeneration(後面會提到)的大小。
陝西電腦培訓認為有一件事你需要注意,你不能任意改變堆內存的大小,你只能在啟動JVM時設定它。
Java的堆內存是什麼?
Java堆(Java Heap)是java虛擬機所管理的內存中最大的一塊
java堆被所有線程共享的一塊內存區域
虛擬機啟動時創建java堆
java堆的唯一目的就是存放對象實例。
java堆是垃圾收集器管理的主要區域。
從內存回收的角度來看, 由於現在收集器基本都採用分代收集算法, 所以Java堆可以細分為:新生代(Young)和老年代(Old)。 新生代又被劃分為三個區域Eden、From Survivor, To Survivor等。無論怎麼劃分,最終存儲的都是實例對象, 進一步劃分的目的是為了更好的回收內存, 或者更快的分配內存。
java堆的大小是可擴展的, 通過-Xmx和-Xms控制。
如果堆內存不夠分配實例對象, 並且對也無法在擴展時, 將會拋出outOfMemoryError異常。
如何理解java的堆內存和棧內存?
1 棧:為編譯器自動分配和釋放,如函數參數、局部變量、臨時變量等等
2 堆:為成員分配和釋放,由程序員自己申請、自己釋放。否則發生內存泄露。典型為使用new申請的堆內容。
原創文章,作者:AATQY,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/313400.html