JVM参数详解

一、类加载顺序
1、描述:当类在运行时会被加载到内容中,除了此类之外还有其他类也会被加载到内容中,第一个被加载到内存中的是Object类;
2、参数设置:-XX:+TraceClassLoading
3、代码实现

package com.cy.java.basic;
public class HelloWorld {
    public static void main(String[] args) {
    }
}

4、IDEA如何配置JVM参数
在这里插入图片描述
在这里插入图片描述
5、结果
在这里插入图片描述
二、GC回收(对象的强引用)
1、描述:程序在运行过程中想了解GC情况?有没有触发GC?如果触发了GC,对哪些内容区域进行了回收?
2、参数设置:-XX:+PrintGCDetails
3、结果
在这里插入图片描述
4、代码

package com.cy.java.basic;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {
    public static void main(String[] args) {
        List<byte[]> list = new ArrayList<>();
        list.add(new byte[1024*1024]);
    }
}

5、结果
在这里插入图片描述
6、代码

package com.cy.java.basic;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {
    public static void main(String[] args) {
        List<byte[]> list = new ArrayList<>();
        for (int i = 0; 0 <10000 ; i++) {
            list.add(new byte[1024*1024]);
        }
    }
}

7、日志打印

[GC (Allocation Failure) [PSYoungGen: 64928K->10008K(76288K)] 64928K->60192K(251392K), 0.0123165 secs] [Times: user=0.06 sys=0.03, real=0.01 secs] 
[GC (Allocation Failure) [PSYoungGen: 74754K->9944K(141824K)] 124939K->124641K(316928K), 0.0174901 secs] [Times: user=0.01 sys=0.08, real=0.02 secs] 
[Full GC (Ergonomics) [PSYoungGen: 9944K->0K(141824K)] [ParOldGen: 114697K->124531K(276992K)] 124641K->124531K(418816K), [Metaspace: 3261K->3261K(1056768K)], 0.0360901 secs] [Times: user=0.03 sys=0.02, real=0.04 secs] 
[GC (Allocation Failure) [PSYoungGen: 130824K->10272K(141824K)] 255356K->276118K(418816K), 0.0457759 secs] [Times: user=0.08 sys=0.14, real=0.05 secs] 
[Full GC (Ergonomics) [PSYoungGen: 10272K->0K(141824K)] [ParOldGen: 265845K->253559K(510976K)] 276118K->253559K(652800K), [Metaspace: 3263K->3263K(1056768K)], 0.0176481 secs] [Times: user=0.06 sys=0.01, real=0.02 secs] 
[GC (Allocation Failure) [PSYoungGen: 130533K->10272K(236032K)] 384092K->411289K(747008K), 0.0337774 secs] [Times: user=0.05 sys=0.11, real=0.03 secs] 
[Full GC (Ergonomics) [PSYoungGen: 10272K->0K(236032K)] [ParOldGen: 401017K->383609K(701952K)] 411289K->383609K(937984K), [Metaspace: 3263K->3263K(1056768K)], 0.0419262 secs] [Times: user=0.16 sys=0.00, real=0.04 secs] 
[GC (Allocation Failure) [PSYoungGen: 224525K->10272K(236032K)] 608134K->633500K(937984K), 0.0792753 secs] [Times: user=0.05 sys=0.16, real=0.08 secs] 
[Full GC (Ergonomics) [PSYoungGen: 10272K->0K(236032K)] [ParOldGen: 623228K->607871K(1034240K)] 633500K->607871K(1270272K), [Metaspace: 3263K->3263K(1056768K)], 0.0287695 secs] [Times: user=0.06 sys=0.02, real=0.03 secs] 
[GC (Allocation Failure) [PSYoungGen: 224538K->10240K(373248K)] 832409K->832131K(1407488K), 0.0604668 secs] [Times: user=0.05 sys=0.16, real=0.06 secs] 
[Full GC (Ergonomics) [PSYoungGen: 10240K->0K(373248K)] [ParOldGen: 821890K->832128K(1313792K)] 832131K->832128K(1687040K), [Metaspace: 3263K->3263K(1056768K)], 0.1152032 secs] [Times: user=0.30 sys=0.03, real=0.12 secs] 
[GC (Allocation Failure) [PSYoungGen: 362385K->10272K(373248K)] 1194514K->1193638K(1687040K), 0.0864782 secs] [Times: user=0.22 sys=0.30, real=0.09 secs] 
[Full GC (Ergonomics) [PSYoungGen: 10272K->0K(373248K)] [ParOldGen: 1183366K->1193608K(1794560K)] 1193638K->1193608K(2167808K), [Metaspace: 3263K->3263K(1056768K)], 0.0980287 secs] [Times: user=0.38 sys=0.01, real=0.10 secs] 
[GC (Allocation Failure) [PSYoungGen: 362398K->10272K(574976K)] 1556006K->1560237K(2369536K), 0.0892813 secs] [Times: user=0.09 sys=0.30, real=0.09 secs] 
[Full GC (Ergonomics) [PSYoungGen: 10272K->0K(574976K)] [ParOldGen: 1549965K->1555092K(2242048K)] 1560237K->1555092K(2817024K), [Metaspace: 3263K->3263K(1056768K)], 0.0367103 secs] [Times: user=0.05 sys=0.03, real=0.04 secs] 
[GC (Allocation Failure) [PSYoungGen: 563997K->10336K(575488K)] 2119090K->2161406K(2817536K), 0.1351603 secs] [Times: user=0.28 sys=0.31, real=0.14 secs] 
[Full GC (Ergonomics) [PSYoungGen: 10336K->0K(575488K)] [ParOldGen: 2151069K->2107048K(2777088K)] 2161406K->2107048K(3352576K), [Metaspace: 3267K->3267K(1056768K)], 0.0621355 secs] [Times: user=0.23 sys=0.02, real=0.06 secs] 
[GC (Allocation Failure) [PSYoungGen: 563951K->10688K(772096K)] 2670999K->2659448K(3549184K), 0.1241793 secs] [Times: user=0.34 sys=0.30, real=0.12 secs] 
[Full GC (Ergonomics) [PSYoungGen: 10688K->0K(772096K)] [ParOldGen: 2648760K->2659308K(2777088K)] 2659448K->2659308K(3549184K), [Metaspace: 3766K->3766K(1056768K)], 0.2872251 secs] [Times: user=1.06 sys=0.03, real=0.29 secs] 
[Full GC (Ergonomics) [PSYoungGen: 761214K->643081K(772096K)] [ParOldGen: 2659308K->2777075K(2777088K)] 3420522K->3420157K(3549184K), [Metaspace: 3766K->3766K(1056768K)], 0.4775529 secs] [Times: user=2.13 sys=0.08, real=0.48 secs] 
[Full GC (Ergonomics) [PSYoungGen: 761285K->760843K(772096K)] [ParOldGen: 2777075K->2777075K(2777088K)] 3538361K->3537919K(3549184K), [Metaspace: 3766K->3766K(1056768K)], 0.0309076 secs] [Times: user=0.13 sys=0.00, real=0.03 secs] 
[Full GC (Allocation Failure) [PSYoungGen: 760843K->760843K(772096K)] [ParOldGen: 2777075K->2777023K(2777088K)] 3537919K->3537867K(3549184K), [Metaspace: 3766K->3766K(1056768K)], 0.4397416 secs] [Times: user=2.86 sys=0.06, real=0.44 secs] 
Heap
 PSYoungGen      total 772096K, used 761344K [0x000000076b400000, 0x000000079be00000, 0x00000007c0000000)
  eden space 761344K, 100% used [0x000000076b400000,0x0000000799b80000,0x0000000799b80000)
  from space 10752K, 0% used [0x000000079a600000,0x000000079a600000,0x000000079b080000)
  to   space 10752K, 0% used [0x0000000799b80000,0x0000000799b80000,0x000000079a600000)
 ParOldGen       total 2777088K, used 2777028K [0x00000006c1c00000, 0x000000076b400000, 0x000000076b400000)
  object space 2777088K, 99% used [0x00000006c1c00000,0x000000076b3f1050,0x000000076b400000)
 Metaspace       used 3797K, capacity 4536K, committed 4864K, reserved 1056768K
  class space    used 420K, capacity 428K, committed 512K, reserved 1048576K
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at com.cy.java.basic.HelloWorld.main(HelloWorld.java:10)

7.1 日志分析

[GC (Allocation Failure) [PSYoungGen: 64928K->10008K(76288K)] 64928K->60192K(251392K), 0.0123165 secs] [Times: user=0.06 sys=0.03, real=0.01 secs] 

GC (Allocation Failure):发生一次垃圾回收,括号里的内容是gc发生的原因,原因是年轻代中没有足够区域能够存放需要分配的数据而失败;
PSYoungGen: 使用的垃圾收集器的名字。
64928K->10008K(76288K):垃圾收集前后的年轻代内存使用情况,其中前面的64928K为gc之前的使用量,10008K为gc之后的内存使用量。括号里的76288k为该内存区域的总量。
64928K->60192K(251392K):垃圾收集前后整个堆内存的使用情况,括号里的为整个可以的堆内存的容量。
0.0123165 secs:整个GC过程持续时间;
[Times: user=0.06 sys=0.03, real=0.01 secs] :分别表示用户态在这里插入代码片耗时,内核态耗时和总耗时。也是对gc耗时的一个记录。
7.2 小结
强引用产生的对象Minor GC来不及垃圾回收回启动Full GC,当Full GC都不能进行垃圾回收时会内存溢出;
二、GC回收(对象的弱引用)
1、代码

package com.cy.java.basic;
import java.util.ArrayList;
import java.util.List;
public class HelloWorld {
    public static void main(String[] args) {
        List<byte[]> list = new ArrayList<>();
        for (int i = 0; 0 <10000 ; i++) {
            byte[] array=new byte[1024*1024];
        }
    }
}

2、日志打印

[GC (Allocation Failure) [PSYoungGen: 1320727K->0K(1388032K)] 1321831K->1104K(1563136K), 0.0007972 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 1387402K->0K(1321984K)] 1388506K->1104K(1497088K), 0.0005657 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 1320623K->0K(1259520K)] 1321727K->1104K(1434624K), 0.0004385 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 1257994K->0K(1200128K)] 1259098K->1104K(1375232K), 0.0004077 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 1199073K->0K(1143296K)] 1200177K->1104K(1318400K), 0.0006520 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 1142784K->0K(1089536K)] 1143888K->1104K(1264640K), 0.0008561 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

小结:弱引用产生的对象Minor GC可以成功的进行垃圾回收,不会启动Full GC;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值