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常用参数的主要内容,如果未能解决你的问题,请参考以下文章

JS常用代码片段-127个常用罗列-值得收藏

JVM虚拟机---常用JVM配置参数

常用jvm参数配置

常用JVM参数

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

常用的jvm命令