• JVM参数配置


    一、Trace跟踪参数:

    1、打印GC的简要信息:

    配置详解:

    首先在idea的run选项卡中找到edit configurations。

    在下图中的VM options中填写如下参数:

    -verbose:gc
    -XX:+PrintGC

    在测试代码中加入一句并运行:

    System.gc();

    解释:这里是说,GC之前用了4M左右内存,GC后用了0.7M左右。

    2、打印GC的详细信息:

    -XX:+PrintGCDetails

    Heap
     PSYoungGen      total 38400K, used 14248K [0x00000000d5f00000, 0x00000000d8980000, 0x0000000100000000)
      eden space 33280K, 42% used [0x00000000d5f00000,0x00000000d6cea288,0x00000000d7f80000)
      from space 5120K, 0% used [0x00000000d8480000,0x00000000d8480000,0x00000000d8980000)
      to   space 5120K, 0% used [0x00000000d7f80000,0x00000000d7f80000,0x00000000d8480000)
     ParOldGen       total 87552K, used 0K [0x0000000081c00000, 0x0000000087180000, 0x00000000d5f00000)
      object space 87552K, 0% used [0x0000000081c00000,0x0000000081c00000,0x0000000087180000)
     Metaspace       used 3212K, capacity 4496K, committed 4864K, reserved 1056768K
      class space    used 349K, capacity 388K, committed 512K, reserved 1048576K
     PSYoungGen:Paralle Scavenge(年轻代)

    3、打印GC的时间戳:

    -XX:+PrintGCTimeStamps

    理解GC日志的含义:

    例如下面这段日志:

    [GC[DefNew: 4416K->0K(4928K), 0.0001897 secs] 4790K->374K(15872K), 0.0002232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

    上方日志的意思是说:这是一个新生代的GC。方括号内部的“4416K->0K(4928K)”含义是:“GC前该内存区域已使用容量->GC后该内存区域已使用容量(该内存区域总容量)”。而在方括号之外的“4790K->374K(15872K)”表示“GC前Java堆已使用容量->GC后Java堆已使用容量(Java堆总容量)”。

    再往后看,“0.0001897 secs”表示该内存区域GC所占用的时间,单位是秒。

     

    -XX:+PrintHeapAtGC
    -XX:+TraceClassLoading
    [Loaded jvmTest1 from file:/I:/IdeaProjects/LeetCode/out/production/JVMTest/]
    [Loaded sun.launcher.LauncherHelper$FXHelper from C:Program FilesJavajdk1.8.0_191jrelib
    t.jar]
    [Loaded java.lang.Class$MethodArray from C:Program FilesJavajdk1.8.0_191jrelib
    t.jar]
    [Loaded java.lang.Void from C:Program FilesJavajdk1.8.0_191jrelib
    t.jar]
    [Loaded java.lang.Shutdown from C:Program FilesJavajdk1.8.0_191jrelib
    t.jar]
    [Loaded java.lang.Shutdown$Lock from C:Program FilesJavajdk1.8.0_191jrelib
    t.jar]
    -Xmx1024m -Xms1024m

    Xmx=981.5M
    free mem=959.1398468017578M
    total mem=981.5M

            byte[] b = new byte[100 * 1024 * 1024];
            System.out.println("分配了100M空间给数组");
    
            System.out.println("Xmx=" + Runtime.getRuntime().maxMemory() / 1024.0 / 1024 + "M");   //系统的最大空间
    
            System.out.println("free mem=" + Runtime.getRuntime().freeMemory() / 1024.0 / 1024 + "M");   //系统的空闲空间
    
            System.out.println("total mem=" + Runtime.getRuntime().totalMemory() / 1024.0 / 1024 + "M");
    
    分配了100M空间给数组
    Xmx=981.5M
    free mem=866.1399383544922M
    total mem=981.5M
  • 相关阅读:
    python import模块的搜索路径
    【转载】PDB命令行调试Python代码
    python 操作hdfs
    hadoop基本命令
    配置hadoop集群
    hadoop配置
    pycharm 配置spark
    pip 使用镜像下载第三方包
    pyechart.Geo -- 基于中国地图数据显示
    cv2 读取图片及展示
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/10264961.html
Copyright © 2020-2023  润新知