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