深入理解java虚拟机——常用虚拟机参数

2019-03-25  本文已影响0人  DaemonXiao

1 跟踪调试参数

1.1 跟踪垃圾回收

-XX:+PrintGC:使用这个参数启动Java虚拟机后,只要遇到GC,就会打印日志。
-XX:+PrintGCDetails:获取更详细的GC信息。
-XX:+PrintHeapAtGC:可以在每次GC前后分别打印堆的信息。
-XX:+PrintGCTimeStamps:会在每次GC发生时,额外输出GC发生的时间,该输出时间为虚拟机启动后的时间偏移量。
-XX:+PrintGCApplicationConcurrentTime:可以打印应用程序的执行时间
-XX:+PrintGCApplicationStoppedTime:可以打印应用程序由于GC而产生的停顿时间。
-XX:+PrintReferenceGC:用来跟踪系统内的软引用、弱引用、虚引用和Finallize队列。

1.2 类加载/卸载的跟踪

-XX:+TraceClassLoading:跟踪类的加载。
-XX:+TraceClassUnloading:跟踪类的卸载。
-XX:+PrintClassHistogram:打印、查看系统中类的分布情况。

1.3 系统参数查看

-XX:+PrintVMOptions:在运行时,打印虚拟机接收到命令行显示参数。
-XX:+PrintCommandLineFlags:打印传递给虚拟机的显式和隐式参数,隐式参数未必是通过命令行直接给出的,它可能是由虚拟机启动时自行设置的。
-XX:+PrintFlagsFinal:打印所有的系统参数的值。

2 堆参数配置

2.1 最大堆和初始堆的设置

-Xmx,-Xms:分别表示最大堆空间和初始堆空间大小。
在实际工作中,可以直接将初始堆和最大堆空间设置相等,这样做可以减少垃圾回收次数,提高程序性能。

2.2 新生代

-Xmn:可以用于设置新生代的大小。新生代的大小会直接影响到老年代的大小,这个参数堆系统性能以及GC行为由很大的影响。新生代的大小一般设置为整个堆空间的1/3到1/4左右。
-XX:SurvivorRatio:用来设置新生代中eden空间和from/to空间的比例关系。

2.3 堆溢出处理

在Java程序运行的过程中,如果堆空间不足,则有可能抛出内存溢出错误(out of memory)简称为OOM。
-XX:+HeapDumpOnOutOfMemoryError:在内存溢出时导出整个堆信息。
-XX:+HeapDumpPath:指定堆的存放路径。

3 非堆内存的参数配置

-XX:MaxMetaspaceSize:指定元空间的最大可用值。
-Xss:指定线程的栈大小。
-XX:MaxDirectMemorySize:最大可用直接内存,如不设置,默认值为最大堆空间。直接内存的溢出依然会引起系统的OOM。

4 虚拟机工作模式:Client和Server

-client和-server:分别指定虚拟机使用Client模式和Server模式。

上一篇下一篇

猜你喜欢

热点阅读