client模式運行
heap默認最大值計算方式:如果物理內存少於192M,那么heap最大值為物理內存的一半。如果物理內存大於等於1G,那么heap的最大值為物理內存的1/4,即256M.。比如:電腦的物理內存為128M,那么最大heap為128/2=64M。如果電腦的物理內存為1G,那么最大heap為1G/4=256M。需要注意的是,雖然我們指定了最大堆內存,但這並不意味着jvm的真實使用了這么大的內存,除非你的應用創建了足夠多的對象達到了這么的內存空間。
heap默認最小值計算方式:最少不得少於8M,如果物理內存大於等於1G,那么默認值為物理內存的1/64,即1024/64=16M。最小堆內存在jvm啟動的時候就會被初始化。
新生代默認最大值為heap總大小的1/3。
server jvm 堆的默認最小和最大值計算方式
除了heap的大小可以設置的更大一些,heap的工作方式和client模式運行的jvm相似。對於32位虛擬機,如果物理內存大於等於4G,那么堆內存可以達到1G。對於64位虛擬機,heap不受限制。如果物理內存多於128G,那么heap最多可以達到32G。
如何設置heap的大小
-Xms:設置heap初始值
-Xmx:設置heap的最大值
如果清楚應用需要大少內存,那么可以把-Xms和-Xmx可以設置成一樣。
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size