zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    初识spring boot
    javascript的console命令
    (转)三角函数计算,Cordic 算法入门
    (原+转)ROC曲线
    (转)(VS2013 )由于应用程序配置不正确,程序未能启动”--原因及解决方法
    (转)最小二乘法拟合圆公式推导及vc实现[r]
    (原)Eclipse中将JNI生成的so打包成jar的步骤
    (原)Eclipse的java中文件读写
    (原)Microsoft Source Reader的简单使用
    (转)android ndk 给结构体赋值的方法
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/10264961.html
Copyright © 2011-2022 走看看