JVM调优是提高Java应用程序性能的重要方面。JVM提供了许多参数来调优,这些参数可以在启动JVM时设置。以下是一些常用的JVM调优参数:
-Xmx:用于设置JVM最大堆内存大小。默认值是物理内存的1/4或1/8,具体取决于JVM版本和操作系统。可以通过设置-Xmx参数来增加JVM的最大堆内存,从而提高程序的性能。
-Xms:用于设置JVM初始堆内存大小。默认值与-Xmx相同。可以通过设置-Xms参数来减少JVM启动时的内存分配,从而加快启动时间。
-XX:PermSize:用于设置JVM永久代内存大小。永久代存储的是类的元数据信息,包括类名、字段名、方法名等。默认值是64MB,但是在JDK8之后已经被移除了。
-XX:MaxPermSize:用于设置JVM最大永久代内存大小。默认值是64MB,但是在JDK8之后已经被移除了。
-XX:NewSize:用于设置JVM新生代内存大小。新生代存储的是新创建的对象。默认值是物理内存的1/4或1/8,具体取决于JVM版本和操作系统。
-XX:MaxNewSize:用于设置JVM最大新生代内存大小。默认值是物理内存的1/4或1/8,具体取决于JVM版本和操作系统。
-XX:SurvivorRatio:用于设置JVM新生代中Eden区和Survivor区的比例。默认值是8,即Eden区和Survivor区的比例为8:1:1。
-XX:MaxTenuringThreshold:用于设置JVM对象在Survivor区中存活的次数。默认值是15,表示对象在Survivor区中存活15次后会被移动到年老代中。
-XX:+UseParallelGC:用于启用并行垃圾回收器。并行垃圾回收器可以利用多个线程来进行垃圾回收,从而提高回收效率。
-XX:+UseConcMarkSweepGC:用于启用CMS垃圾回收器。CMS垃圾回收器可以在不停止应用程序的情况下进行垃圾回收,从而减少STW时间。
-XX:+UseG1GC:用于启用G1垃圾回收器。G1垃圾回收器可以在不停止应用程序的情况下进行垃圾回收,并且可以根据应用程序的需求动态调整回收策略。
以上是一些常用的JVM调优参数,可以根据应用程序的需求进行调整,从而提高程序的性能和稳定性。
补充一下JDK7和JDK8版本中JVM调优参数的差异。
JDK7版本中常用的JVM调优参数包括:
- -Xmx:用于设置JVM最大堆内存大小。
- -Xms:用于设置JVM初始堆内存大小。
- -XX:PermSize:用于设置JVM永久代内存大小。
- -XX:MaxPermSize:用于设置JVM最大永久代内存大小。
- -XX:NewSize:用于设置JVM新生代内存大小。
- -XX:MaxNewSize:用于设置JVM最大新生代内存大小。
- -XX:SurvivorRatio:用于设置JVM新生代中Eden区和Survivor区的比例。
- -XX:MaxTenuringThreshold:用于设置JVM对象在Survivor区中存活的次数。
- -XX:+UseParallelGC:用于启用并行垃圾回收器。
- -XX:+UseConcMarkSweepGC:用于启用CMS垃圾回收器。
而在JDK8版本中,由于永久代被移除,因此相关的JVM调优参数也被废弃。取而代之的是元空间(Metaspace),常用的JVM调优参数包括:
- -Xmx:用于设置JVM最大堆内存大小。
- -Xms:用于设置JVM初始堆内存大小。
- -XX:MetaspaceSize:用于设置JVM元空间大小。
- -XX:MaxMetaspaceSize:用于设置JVM最大元空间大小。
- -XX:NewSize:用于设置JVM新生代内存大小。
- -XX:MaxNewSize:用于设置JVM最大新生代内存大小。
- -XX:SurvivorRatio:用于设置JVM新生代中Eden区和Survivor区的比例。
- -XX:MaxTenuringThreshold:用于设置JVM对象在Survivor区中存活的次数。
- -XX:+UseParallelGC:用于启用并行垃圾回收器。
- -XX:+UseConcMarkSweepGC:用于启用CMS垃圾回收器。
- -XX:+UseG1GC:用于启用G1垃圾回收器。
需要注意的是,JDK8版本中默认使用的是Parallel垃圾回收器
例如:-Xmx2g -Xms2g -XX:MaxNewSize=512m。