Jvm常用参数
Posted zqq_hello_world
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jvm常用参数相关的知识,希望对你有一定的参考价值。
文章目录
Java获取堆内存使用情况
public static void main(String[] args) {
//已经分配的内存大小 默认单位byte,转为mb 1 * 1024 * 1024 b = 1 m
long totalMemory = Runtime.getRuntime().totalMemory() / (1024 * 1024);
//最大内存
long maxMemory = Runtime.getRuntime().maxMemory() / (1024 * 1024);
//所分配内存的剩余大小
long freeMemory = Runtime.getRuntime().freeMemory() / (1024 * 1024);
}
堆栈内存大小
参数 | 解释 | 举例 |
---|---|---|
-Xmx | 堆最大值,默认物理内存的1/4 | -Xmx2048M :堆最大值设为2g |
-Xms | 堆最小值,默认物理内存的1/16 | -Xms2048M:堆最小者设为2g |
-Xmn | 设置堆新生代大小 | -Xmn500M:新生代设为500M |
-Xss | 栈容量 | -Xss1024K:栈内存设为1M |
堆内存新生代Eden和Survivor比例
-
-XX:SurvivorRatio=8
如果虚拟机堆内存新生代是按照Eden和双Survivor布局,这个参数设置Eden和一个Survivor的比例。等于8代表一个Eden和Survivor区域比例为8:1
内存溢出打印
-
-XX:+HeapDumpOnOutOfMemoryError
让虚拟机在出现内存溢出异常的时候Dump出当前的内存堆转储快照,以便进行事后分析
-
-XX:HeapDumpPath=${目录}
堆转储快照存储位置
元空间
-
-XX:MaxMetaspaceSize
设置元空间最大值,默认-1,即不受限制,只受限于本地内存大小。
-
-XX:MetaspaceSize
指定元空间的初始空间大小,以字节为单位,达到该值就会触发垃圾收集进行类型卸载,同时收集器会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过-XX:MaxMetaspaceSize(设置了的话)的情况下,适当提高该值
-
-XX:MinMetaspaceFreeRatio
在垃圾收集之后控制最小的元空间剩余容量的百分比,可减少因为元空间不足导出的垃圾收集的频率。-XX:MinMetaspaceFreeRatio=40 。设置为百分之四十
-
-XX:MaxMetaspaceFreeRatio
控制最大的元空间剩余容量的百分比
本地直接内存
-
-XX:MaxDirectMemorySize
指定直接内存的大小,如果不指定,默认与Java堆的最大值一致(-Xmx)。-XX:MaxDirectMemorySize=1024m,直接内存设为1g
GC日志
查看GC基本信息
- -XX:+PrintGC:JDK9之前版本使用。
- -Xlog:gc:JDK9以上版本使用。
查看GC详细信息
- -XX:+PrintGCDetails:JDK9之前版本使用。
- -Xlog:gc*:JDK9以上版本。
查看GC前后堆、方法区可用容量变化
- -XX:+PrintHeapAtGC:JDK9之前版本使用。
- -Xlog:gc+heap=debug:JDK9以上版本。
查看GC过程用户线程并发时间及停顿时间
- -XX:+PrintGCApplicationConcurrentTime和-XX:+PrintGCApplicationStoppedTime:JDK9之前版本使用。
- -Xlog:safepoint:JDK9以上版本。
查看熬过收集后剩余对象的年龄分布信息
- -XX:+PrintTenuringDistribution:JDK9之前版本使用。
- -Xlog:gc+age=trace:JDK9以上版本。
其他配置
- -XX:+PrintCommandLineFlags:查看程序使用的JVM参数。
- -XX:MaxTenuringThreshold:对象进入老年代的年龄阈值。-XX:MaxTenuringThreshold=15
- -XX:+PrintTenuringDistribution:JVM在每次新生代GC时,打印出幸存区中对象的年龄分布
以上是关于Jvm常用参数的主要内容,如果未能解决你的问题,请参考以下文章