JVM_参数测试记录

以一个简单的例子记录JVM 参数的测试, 包含堆 和 GC.

1. 堆


/**
 * 测试堆空间中才用到的jvm参数
  1. 在Run -> profile -> Edit configuration -> VM Option 配置中的 VM
    -XX:+PrintFlagsInitial -XX:+PrintFlagsFinal   查看所有参数的默认初始值 和最终值
      MaxHeapSize = 130862280 ?? (/1024/1024 =125M? )
      InitialHeapSize  = 0 ??
  2. 具体查看某个参数的指令:
      jps : 查看当前运行中的进程
      jps -flag 要查看的flag 进程id

     例如:
     (1) jinfo -flag MaxHeapSize 18876
         -XX:MaxHeapSize=2126512128 即最大堆空间大小为-> /1024/1024/1024 = 1.98G (物理内存为8G,即它的1/4)
     (2) jinfo -flag InitialHeapSize 18876
         -XX:InitialHeapSize=134217728 即初始堆空间大小为-> /1024/1024/1024 = 128M (物理内存为8G,即它的1/64)
      (3)>jinfo -flag NewRatio 10876
          -XX:NewRatio=2  即新生代与老年代在堆结构中的占比为 1:2  (老年代占两份)
      (4) jinfo -flag MaxTenuringThreshold 10876
           -XX:MaxTenuringThreshold=15  即新生代垃圾的最大年龄

    更多参数参考官网: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
 */
public class HeapTest {
    public static void main(String[] args) {
        System.out.println("main start");
        try {
            // 为了确保程序在短时间内一直运行,方便查看参数
            Thread.sleep(1000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("main end ");
    }
}

2. GC (7中垃圾回收器)

package com.example.javatest.gctest;

/**
 * VMOptions:
 * -XX:+PrintCommandLineFlags 打印标志
 * 回收器 #1 & #2 (串行,单线程,内存低,效率高)
 * -XX:+UseSerialGC 新生代使用SerialGC, 同时老年代使用Serial Old GC
 *
 * 回收器#3
 * -XX:+UseParNewGC: 新生代使用ParNew GC
 *
 * 回收器 #4 & #5 (并行,多线程, JDK8 中默认搭配)
 * -XX:+UseParallelGC  新生代使用ParallelGC
 * -XX:+UseParallelOldGC 老年代使用ParallelGC
 * 二者可以相互激活
 *
 * 回收器 #6 (并发,低延迟即暂停时间短, JDK14 中移除)
 * -XX:+UseConcMarkSweepGC: 表明老年代使用CMS GC, 同时新生代会触发对ParNew的使用
 *
 * 回收器 #7 (在延迟可控下,吞吐量优先)
 * -XX:+UseG1GC  使用G1 回收器
 *
 * 查看使用的GC (垃圾回收器)
 * jps
 * 1 . jinfo -flag UseSerialGC 2436 --> -XX:-UseSerialGC
 *
 * JDK8 中默认使用 ParallelGC(新生代) 、 ParallelOldGC(老年代)
 * 2. jinfo -flag UseParallelGC 2436  --> -XX:+UseParallelGC
 * 3. jinfo -flag UseParallelOldGC 2436  --> -XX:+UseParallelOldGC
 */

public class GCTest3 {
    public static void main(String[] args) {
        System.out.println("main start");

        try {
            // 为了确保程序在短时间内一直运行,方便查看参数
            Thread.sleep(1000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("main end");
    }
}

可参考官网参数介绍: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值