Java 堆是指在程序运行时分配给对象生存的空间
通过-mx/-Xmx 和-ms/-Xms 来设置起始堆的大小和最大堆的大小
根据自己 JDK 的版本和厂家决定使用-mx 和-ms 或-Xmx 和-Xms
Java 堆大小决定了垃圾回收的频度和速度,Java 堆越大,垃圾回收的频度越低,速度越慢
同理,Java 堆越小,垃圾回收的频度越高,速度越快
要想设置比较理想的参数,还是需要了解一些基础知识的
Java 堆的最大值不能太大,这样会造成系统内存被频繁的交换和分页
所以最大内存必须低于物理内存减去其他应用程序和进程需要的内存
而且堆设置的太大,造成垃圾回收的时间过长,这样将得不偿失,极大的影响程序的性能
以下是一些经常使用的参数设置: 1) 设置-Xms 等于-XmX 的值; 2) 估计内存中存活对象所占的空间的大小,设置-Xms 等于此值,-Xmx 四倍于此值; 3) 设置-Xms 等于-Xmx 的 1/2 大小; 4) 设置-Xms 介于-Xmx 的 1/10 到1/4 之间; 5) 使用默认的设置
大家需要根据自己的运行程序的具体使用场景,来确定最适合自己的参数设置
除了-Xms 和-Xmx 两个最重要的参数外,还有很多可能会用到的参数,这些参数通常强烈的依赖于垃圾收集的算法,所以可能因为JDK 的版本和厂家而有所不同
但这些参数一般在 Web开发中用的比较少,我就不做详细介绍了
在实际的应用中注意设置-Xms 和-Xmx 使其尽可能的优化应用程序就行了
对于性能要求很高的程序,就需要自己再多研究研究Java 虚拟机和垃圾收集算法的机制了
可以看看曹晓钢翻译的《深入Java 虚拟机》一书
Java程序性能调优的基本知识和 JDK调优 一 基本知识 1
1 性能是什么 在性能调优之前,我们首先来了解一下性能是什么
关于性能,我想每个学习过 Java的人都能列出