这里以jdk8为例子,查看默认的垃圾回收器
java -XX:+PrintCommandLineFlags -version
-XX:+UseParallelGC : Parallel Scavenge 和 Parallel Old 组合
-XX:InitialHeapSize=268435456 : 初始化堆大小(字节)
-XX:MaxHeapSize=4294967296 : 最大堆大小(字节)
启动java程序时指定垃圾回收器
java -XX:+PrintGCDetails -Xms512m -Xmx512m -XX:+UseG1GC -jar fileName
-XX:+PrintGCDetails :打印gc详细信息
-Xms512m :设置堆的最小和初始大小
-Xmx512m :堆最大大小
-XX:+UseG1GC :使用G1垃圾回收器
还有一些常用的例如:
-Xmn256m :为年轻代设置堆的初始和最大大小
-XX:ThreadStackSize=1k :设置Java线程堆栈大小
-XX:MaxGCPauseMillis=500 :设置最大GC暂停时间的目标(以毫秒为单位)。这是一个软目标,JVM将尽最大努力实现它。缺省情况下,没有最大暂停时间值
-XX:+PrintGCDetails :允许在每次GC中打印详细消息。默认情况下,该选项是禁用的
-XX:+HeapDumpOnOutOfMemoryError :在抛出Java .lang. outofmemoryerror异常时,通过使用堆分析器(HPROF)启用将Java堆转储到当前目录中的文件。可以使用-XX:HeapDumpPath选项显式设置堆转储文件路径和名称。默认情况下,该选项是禁用的,并且当抛出OutOfMemoryError异常时不会转储堆。
-XX:HeapDumpPath=path
当设置了-XX: HeapDumpOnOutOfMemoryError选项时,设置用于写入堆分析器(HPROF)提供的堆转储的路径和文件名。默认情况下,在当前工作目录中创建该文件,并将其命名为java_pidpid。Hprof,其中pid是导致错误的进程的标识符。下面的示例显示了如何显式设置默认文件(%p表示当前进程标识符):
- xx: HeapDumpPath =./ java_pid % p.hprof
设置堆转储文件到C:/log/java/java_heapdump.log的示例如下:
- xx: HeapDumpPath = C: /log/java/java_heapdump.log
更多参考官方文档即可
https://docs.oracle.com/javase/8/docs/index.html
上图点击对应命令可跳转