首先先介绍下java基础常用的java服务启动时开启的参数:
内存相关参数:
-Xmx:设置JVM的最大堆内存大小。
-Xms:设置JVM的初始堆内存大小。
-Xmn:设置新生代堆内存大小。
-XX:MaxMetaspaceSize:设置元空间(Metaspace)的最大大小。
-XX:SurvivorRatio:设置新生代中Eden区与Survivor区的大小比例。
-XX:NewRatio:设置新生代与老年代堆内存大小的比例。
垃圾回收相关参数:
-XX:+UseSerialGC:使用串行垃圾回收器。
-XX:+UseParallelGC:使用并行垃圾回收器。
-XX:+UseConcMarkSweepGC:使用并发标记-清除垃圾回收器。
-XX:+UseG1GC:使用G1垃圾回收器。
-XX:+PrintGC:打印简要的垃圾回收信息。
-XX:+PrintGCTimeStamps:打印垃圾回收的时间戳。
-XX:+PrintGCDateStamps:打印垃圾回收的日期时间戳。
-XX:+PrintGCDetails:打印详细的垃圾回收信息。
-XX:+PrintGCApplicationStoppedTime:打印应用程序停顿时间的垃圾回收信息。
-XX:+PrintTenuringDistribution:打印对象在新生代中的年龄分布信息。
-XX:+PrintHeapAtGC:在垃圾回收前后打印堆内存的使用情况。
JIT编译相关参数:
-XX:+PrintCompilation:打印即时编译(JIT)的详细信息。
-XX:+PrintInlining:打印方法内联信息。
-XX:+PrintOptoAssembly:打印Opto汇编代码。
GC日志相关参数:
-Xloggc::将GC日志输出到指定文件中。
-XX:+UseGCLogFileRotation:启用GC日志轮转。
-XX:NumberOfGCLogFiles:设置GC日志文件的数量。
-XX:GCLogFileSize:设置单个GC日志文件的大小
下面是在进行性能分析时开启的参数,但在生产环境中要避免使用以下参数,以免对性能和稳定性造成不必要的影响。最好在开发和测试环境中使用这些参数进行调试和诊断
-XX:+UnlockDiagnosticVMOptions参数用于解锁JVM的诊断选项,允许您访问更多的诊断功能。这样可以更深入地了解JVM的内部状态和行为。
-XX:-ZProactive参数用于禁用JVM的主动优化功能,即禁用JVM在运行时对代码进行自动优化。禁用主动优化可以使代码的执行路径和行为更可见,有助于性能调试和分析。
-XX:+PrintFlagsFinal :打印JVM的所有参数及其最终值,包括默认值和通过命令行设置的值。
-XX:+PrintVMOptions :打印JVM的所有可选参数及其说明。
-XX:+PrintCommandLineFlags :打印JVM的命令行参数,包括默认值和通过命令行设置的值。
-XX:+PrintStringTableStatistics :打印字符串常量池的统计信息,包括字符串的数量、大小、碰撞次数等。
-XX:+PrintClassHistogram :打印类的直方图,显示JVM中已加载类的数量和大小。
-XX:+TraceClassLoading :跟踪类的加载过程,打印详细的类加载信息。
-XX:+TraceClassUnloading :跟踪类的卸载过程,打印详细的类卸载信息。
-XX:TraceClassResolution= :跟踪指定类的解析过程,打印类的解析信息。
-XX:+PrintCompilation :打印即时编译(JIT)的详细信息,包括方法的编译过程、时间等。
-XX:+PrintInlining :打印方法内联的信息,显示哪些方法被内联,以及内联深度等
案例:
java -Xmx2g -Xms1g -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions -XX:-ZProactive -XX:+UseG1GC -Xloggc:gc.log -jar YourApp.jar
在上述案例中,我们使用了一系列JVM参数。其中,我们设置了最大堆内存和初始堆内存为2GB和1GB,启用了详细的垃圾回收日志打印,打印了垃圾回收的时间戳,打印了即时编译的详细信息,并解锁了诊断VM选项。我们使用了G1垃圾回收器,并将GC日志输出到gc.log文件中。
通过这些参数,我们可以观察应用程序的内存使用情况、垃圾回收性能以及JIT编译的过程。同时,可以使用其他工具(如VisualVM、JProfiler等)来分析gc.log和JIT编译日志,进一步进行性能分析和优化。