一 代码

import java.util.ArrayList;
import java.util.List;/**
* 测试 MinorGC、MajorGC、FullGC
* -Xms9m -Xmx9m -XX:+PrintGCDetails
*/
public class GCTest {public static void main(String[] args) {int i = 0;try {List<String> list = new ArrayList<>();String a = "cakin";while (true) {list.add(a);a = a + a;i++;}} catch (Throwable t) {t.printStackTrace();System.out.println("遍历次数为:" + i);}}
}

二 测试

[GC (Allocation Failure) [PSYoungGen: 2048K->488K(2560K)] 2048K->961K(9728K), 0.0028277 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 2393K->500K(2560K)] 2866K->1674K(9728K), 0.0013144 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 2153K->444K(2560K)] 3327K->2258K(9728K), 0.0008944 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Ergonomics) [PSYoungGen: 2457K->0K(2560K)] [ParOldGen: 6934K->5886K(7168K)] 9391K->5886K(9728K), [Metaspace: 3250K->3250K(1056768K)], 0.0084179 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 0K->0K(2560K)] 5886K->5886K(9728K), 0.0003287 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Allocation Failure) [PSYoungGen: 0K->0K(2560K)] [ParOldGen: 5886K->5866K(7168K)] 5886K->5866K(9728K), [Metaspace: 3250K->3250K(1056768K)], 0.0076788 secs] [Times: user=0.05 sys=0.00, real=0.01 secs]
遍历次数为:17
Heap
PSYoungGen      total 2560K, used 93K [0x00000000ffd00000, 0x0000000100000000, 0x0000000100000000)eden space 2048K, 4% used [0x00000000ffd00000,0x00000000ffd17790,0x00000000fff00000)from space 512K, 0% used [0x00000000fff80000,0x00000000fff80000,0x0000000100000000)to   space 512K, 0% used [0x00000000fff00000,0x00000000fff00000,0x00000000fff80000)
ParOldGen       total 7168K, used 5866K [0x00000000ff600000, 0x00000000ffd00000, 0x00000000ffd00000)object space 7168K, 81% used [0x00000000ff600000,0x00000000ffbbab08,0x00000000ffd00000)
Metaspace       used 3295K, capacity 4496K, committed 4864K, reserved 1056768Kclass space    used 356K, capacity 388K, committed 512K, reserved 1048576K
java.lang.OutOfMemoryError: Java heap spaceat java.util.Arrays.copyOfRange(Arrays.java:3664)at java.lang.String.<init>(String.java:207)at java.lang.StringBuilder.toString(StringBuilder.java:407)at com.atguigu.java.chapter08.java1.GCTest.main(GCTest.java:18)

三 说明

1 触发 OOM 的时候,一定是进行了一次Full GC。

2 只有在老年代空间不足时候,才会产生 OOM 异常。

3 打印解读

Full GC (Ergonomics):发生了一次Full GC。

[PSYoungGen: 2457K->0K(2560K)] :Full GC 前后,新生代内存变化情况。

[ParOldGen: 6934K->5886K(7168K)] :Full GC 前后,老年代内存变化情况。

9391K->5886K(9728K):Full GC 前后,整个堆内存变化情况

[Metaspace: 3250K->3250K(1056768K)]:Full GC 前后,元空间内存变化情况。

GC 和 OOM 举例相关推荐

  1. 面试两连击:线上JVM GC问题和OOM内存溢出的解决方案,聊聊呗!

    点击上方石杉的架构笔记,右上角选择"设为星标" 每日早8点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 往期文章 BAT 面试官是如何 ...

  2. 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例

    大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...

  3. java什么时会出现gc_面试题:java GC发生在会么时候,对什么东西,做了什么事情...

    转自cy609329119的 面试题:"你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?" 面试题目: 地球人都知道,Java有个东西叫垃圾收集器,它让创建的对 ...

  4. GC(垃圾处理机制)面试加薪必备

    1: 详细解释Java中垃圾收集的主要流程. 垃圾收集主要有两种形式:手工.自动 自动会不定期进行回收,以释放无用的空间 手工调用的是System类中的gc()方法,此方法实际上调用的是Runtime ...

  5. full GC排查案例

    https://www.cnblogs.com/QG-whz/p/9647614.html 问题出现:现网CPU飙高,Full GC告警 CGI 服务发布到现网后,现网机器出现了Full GC告警,同 ...

  6. JVM上篇(13):GC分类器

    GC分类器 GC 分类与性能指标 Java不同版本新特性 垃圾回收器分类 评估 GC 的性能指标 指标 吞吐量(throughput) 暂停时间 吞吐量 vs 暂停时间 不同的垃圾回收器概述 垃圾收集 ...

  7. Java GC(垃圾回收)机制知识总结

    Java GC系列 Java关键术语 Java HotSpot 虚拟机 JVM体系结构 Java堆内存 启动Java垃圾回收 Java垃圾回收过程 垃圾回收中实例的终结 对象什么时候符合垃圾回收的条件 ...

  8. 面试题:java GC是在什么时候,对什么东西,做了什么事情?

    一.回答:什么时候? 能说明minor gc/full gc的触发条件.OOM的触发条件,降低GC的调优的策略.    分析:列举一些我期望的回答:eden满了minor gc,升到老年代的对象大于老 ...

  9. 内存与垃圾回收——(十二)GC 日志分析

    文章目录 12_GC 日志分析 12.1_GC 常用参数 12.2_日志补充说明 12.3_举例解读日志中堆空间数据 12.4_日志分析工具 12_GC 日志分析 12.1_GC 常用参数 通过阅读 ...

最新文章

  1. python——赋值与深浅拷贝
  2. 【Linux】类Unix 操作系统进程监控控制工具 Supervisor
  3. 网络端口的转发和重定向
  4. 二分搜索 POJ 3273 Monthly Expense
  5. SoapUI 请求 https 报 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
  6. ASP.NET 开发者 开始学习ASP.NET Core 2吧
  7. 表必须要有主键吗_玄关隔断什么材质好?玄关隔断必须要做吗?
  8. 【文末福利】如何用精密算法解决未婚妻问题?
  9. 保存blob到本地_用12行代码提取浏览器自动保存的密码
  10. python pip下载本地依赖包,并在离线环境中安装,并解决报错ERROR: Could not find a version that satisfies the requirement报错
  11. Java后端测试概述
  12. 蓝桥杯 ADV-144算法提高 01背包
  13. 隐马尔可夫模型及其基本假设
  14. HTML仿小米官网登陆
  15. 目标跟踪之MOSSE算法(C++版本配置及原理简介)
  16. java之final的各种用法
  17. 网络操作系统和分布式操作系统的区别
  18. python编程出现:expected an indented block错误。
  19. 开源硬件的知识产权管理
  20. 前端失业 3个月,尝试接私单的感触

热门文章

  1. wps在线预览接口_wps文的基本操作.ppt
  2. 深入了解HBASE架构
  3. 考研英语 长难句训练day54
  4. 海外推特Twitter大V: KOL网红营销怎样深耕市场-大舍传媒
  5. JS 10和16进制转换 封装
  6. 解锁WiFi密码,我只用了60行代码....
  7. ASCII编码和Unicode编码的区别
  8. mongodb创建2ds索引语句
  9. DS期末复习卷(六)
  10. c语言课题作业4,C语言程序设计课后作业4