JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

JVM常用参数配置解析 jvm参数在哪里配置

wys521 2024-11-01 15:14:43 精选教程 21 ℃ 0 评论

JVM(Java虚拟机)的参数配置对于优化Java应用程序的性能至关重要。本文将介绍一些常见的JVM参数配置。

一、标准参数

  • -client和-server:设置JVM使用client模式或server模式。client模式启动快,但性能和内存管理效率不高,适用于桌面应用;server模式启动慢,但性能和内存管理效率高,适用于服务器。64位的JVM只有server模式。
  • -verbose:查询GC(垃圾回收)问题最常用的命令之一,常用于排查GC问题。例如,-verbose:gc输出每次GC的相关情况,-verbose:class输出JVM载入类的相关信息,-verbose:jni输出native方法调用的相关情况。

二、非标准参数(-X)

  • -Xms:设置初始堆内存大小,即程序启动时占用内存大小,默认是物理内存的1/64。
  • -Xmx:设置最大堆内存大小,即程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常,默认是物理内存的1/4。
  • -Xmn:设置年轻代大小,增大年轻代会减少老年代大小,官网推荐整堆的3/8。
  • -Xss:设置单个线程栈内存大小,默认是1MB。

三、非标准参数(-XX)

性能参数

  • -XX:+UseSerialGC:使用串行垃圾收集器。
  • -XX:+UseParallelGC:使用并行垃圾收集器(年轻代)。
  • -XX:+UseParallelOldGC:使用并行垃圾收集器(老年代),JDK6.0以上支持。
  • -XX:+UseConcMarkSweepGC:使用CMS(Concurrent Mark Sweep)垃圾收集器,适用于多CPU,并要求缩短因GC造成程序停滞的时间。
  • -XX:+UseG1GC:使用G1垃圾收集器。
  • -XX:+HeapDumpOnOutOfMemoryError:这个参数告诉JVM在内存溢出错误发生时生成堆转储文件。
  • -XX:HeapDumpPath={HEAP-DUMP-FILE-PATH} :这个参数指定了堆转储文件的存储路径。需要将{HEAP-DUMP-FILE-PATH}替换为实际的文件路径。

行为参数

  • -XX:NewRatio:设置年轻代(包括Eden和两个Survivor区)与老年代的比值(除去持久代)。例如,设置为4,则年轻代与老年代所占比值为1:4。
  • -XX:SurvivorRatio:设置年轻代中Eden区与Survivor区的大小比值。例如,设置为4,则两个Survivor区与一个Eden区的比值为2:4。
  • -XX:MaxTenuringThreshold:设置垃圾最大年龄。如果设置为0,则年轻代对象不经过Survivor区,直接进入老年代。
  • -XX:PermSize-XX:MaxPermSize:设置持久代(PermGen space)的初始大小和最大大小。不过,在Java 8中,PermGen space被元空间(Metaspace)所替代,相关参数变为-XX:MetaspaceSize和-XX:MaxMetaspaceSize。

调试参数

  • -XX:+PrintGC:每次触发GC时打印相关日志。
  • -XX:+PrintGCDetails:打印更详细的GC日志。
  • -XX:+PrintGCTimeStamps:打印GC发生的时间戳。
  • -Xloggc:filename:将GC日志输出到指定文件。例如,-Xloggc:/data/gclog/gc.log表示将GC日志输出到指定路径。
  • -XX:+DisableExplicitGC:禁用System.gc()调用,防止显式触发Full GC。

四、实际应用中的配置示例

辅助指令jinfo

jinfo:查看或修改正在运行的JVM配置。例如,jinfo -flag HeapDumpOnOutOfMemoryError 870778用于查看进程号为870778的JVM是否开启了HeapDumpOnOutOfMemoryError配置。

配置示例

堆内存配置

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k

这里设置了JVM最大可用内存为3550MB,初始内存也为3550MB(避免垃圾回收后重新分配内存),年轻代大小为2GB,每个线程的堆栈大小为128KB。

并行收集器配置

java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20

这里选择了并行垃圾收集器,并配置了20个并行GC线程。

五、注意事项

  1. 在进行JVM调优之前,建议先进行性能分析和监控,找出潜在的瓶颈和问题点。
  2. 不同的应用程序可能需要不同的参数配置,因此需要根据具体应用程序的特性和工作负载进行评估和测试。
  3. 避免过度创建对象,以减少垃圾回收的负担。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表