搜索
简帛阁>技术文章>读取JVM参数的方法分享

读取JVM参数的方法分享

转自:

http://www.java265.com/JavaJingYan/202205/16523679023357.html

JVM拥有很多参数,如下所示

-XX:+PrintCommandLineFlags   打印出JVM运行时的各种的各项配置参数

-verbose:gc   发生GC时,打印出GC日志
-XX:+printGC 发生GC时,打印出GC日志

-XX:+PrintGCDetails 打印GC的详细日志,并且在程序运行结束是会打印出JVM的内存占用情况

-XX:+PrintGCDateStamps 打印GC发生的时间

-XX:+PrintGCTimeStamps   打印GC发生的时间,相对JVM启动的时间

-Xloggc:d:\\gc.log gc日式默认是打印在控制台,添加这个参数可以指定GC日志的输出位置,指定后控制台就无法查看GC日志了

-XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息 

-XX:+TraceClassLoading 监控类的加载

-Xmx 指定最大堆内存

–Xms  指定最小堆内存

-Xmn 设置新生代大小
-XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久区)的比值 4 表示 新生代:老年代=1:4,即年轻代占堆的1/5
-XX:SurvivorRatio 设置两个Survivor区和eden的比 8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10

-XX:+HeapDumpOnOutOfMemoryError OOM时导出堆到文件
-XX:HeapDumpPath=d:/a.dump 导出OOM的路径

-XX:OnOutOfMemoryError 在OOM时,执行一个脚本"-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“当程序OOM时,在D:/a.txt中将会生成线程的dump可以在OOM时,发送邮件,甚至是重启程序

XX:PermSize 设置永久区的初始空间
-XX:MaxPermSize 设置永久区最大空间

-Xss 指定栈的大小

-XX:+UseSerialGC  新生代、老年代使用串行回收,新生代复制算法,老年代标记-压缩

-XX:+UseParNewGC 新生代并行,老年代串行,Serial收集器新生代的并行版本,复制算法,多线程,需要多核支持
-XX:ParallelGCThreads 限制线程数量

-XX:MaxGCPauseMills 最大停顿时间,单位毫秒,GC尽力保证回收时间不超过设定值
-XX:GCTimeRatio 0-100的取值范围,垃圾收集时间占总时间的比 默认99,即最大允许1%时间做GC
这两个参数是矛盾的。因为停顿时间和吞吐量不可能同时调优

-XX:+UseConcMarkSweepGC Concurrent Mark Sweep 并发标记清除,老年代收集器(新生代使用ParNew)
-XX:CMSInitiatingOccupancyFraction设置触发GC的阈值

-XX:+ UseCMSCompactAtFullCollection Full GC后,进行一次整理,整理过程是独占的,会引起停顿时间变长
-XX:+CMSFullGCsBeforeCompaction 设置进行几次Full GC后,进行一次碎片整理
-XX:ParallelCMSThreads 设定CMS的线程数量
-XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收
-XX:UseCMSInitiatingOccupancyOnly:表示只在到达阀值的时候,才进行CMS回收


那么如何读取当前JVM使用了哪些参数呢?

 

 

下文笔者讲述使用java代码读取JVM参数的方法分享,如下所示:

实现思路:
    使用 ManagementFactory.getRuntimeMXBean()
    中的getInputArguments()方法即可获取JVM运行时的参数
package com.java265.other;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;
public class Test01 {
    /*
     * java265.com 示例程序
     */
    public static void main(String[] args) {
        RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
        List<String> aList = bean.getInputArguments();

        for (int i = 0; i < aList.size(); i++) {
            System.out.println(aList.get(i));
        }
    }
}
----运行以上代码,将输出以下信息-----
-Dfile.encoding=UTF-8
-XX:+ShowCodeDetailsInExceptionMessages

 

 
转自:http://wwwjava265com/JavaJingYan/202205/16523679023357htmlJVM拥有很多参数,如下所示XX:+PrintCommandLineFlags
前言有时候我们需要在程序运行时候对程序设置环境变量,恰巧我也遇到了这个问题,所以在此记录一下IDEA是如何设置环境变量。作用DpropertyValue该参数通常用于设置系统级全局变量值,如配置
实例如下:MemoryMXBeanmemorymbeanManagementFactorygetMemoryMXBean();MemoryUsageusagememorymbeangetHeapMem
这篇blog文章介绍很详细,下面是适用于大部分java工程jvm参数/usr/bin/java\Xms4gXmx4gXss1mXX:+UseConcMarkSweepGCXX:CMSIniti
今天学习是设置堆大小参数:XmxXmsXX:InitialHeapSizeXX:MaxHeapSizeXmx和MaxHeapSize是等价,都是设置堆最大值,比如Xmx100M和XX:Max
JVM参数含义参数名称含义默认值Xms初始堆大小物理内存1/64(<1GB)默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到Xmx最大限制
一、JVM参数类型1、标准参数2、X参数3、XX参数二、标准参数1、help2、serverclient3、versionshowversion4、cpclasspath三、X参数非标准化参数Xint
前面已经提到过很多JVM参数了,这节再简单汇总下,以及部分不常用参数。Java启动参数共分为三类:标准参数():所有的JVM实现都必须实现这些参数功能,而且向后兼容,如version、clas
内存分配相关Xms英文释义:Initialheapsize(inbytes)中文释义:堆区初始值使用方法:Xms2g或XX:InitialHeapSize2048mXmx英文释义:Maximumhea
JVM内存相关几个核心参数参数部分看我笔记https://noteyoudaocom/s/Ch3awnVuJVM模板1ParNew+CMS版根据服务调整XmxXmsXmn大小即可serverXmx1