GC 和 OOM 举例
一 代码
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 举例相关推荐
- 面试两连击:线上JVM GC问题和OOM内存溢出的解决方案,聊聊呗!
点击上方石杉的架构笔记,右上角选择"设为星标" 每日早8点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 往期文章 BAT 面试官是如何 ...
- 大数据技术之_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. ...
- java什么时会出现gc_面试题:java GC发生在会么时候,对什么东西,做了什么事情...
转自cy609329119的 面试题:"你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?" 面试题目: 地球人都知道,Java有个东西叫垃圾收集器,它让创建的对 ...
- GC(垃圾处理机制)面试加薪必备
1: 详细解释Java中垃圾收集的主要流程. 垃圾收集主要有两种形式:手工.自动 自动会不定期进行回收,以释放无用的空间 手工调用的是System类中的gc()方法,此方法实际上调用的是Runtime ...
- full GC排查案例
https://www.cnblogs.com/QG-whz/p/9647614.html 问题出现:现网CPU飙高,Full GC告警 CGI 服务发布到现网后,现网机器出现了Full GC告警,同 ...
- JVM上篇(13):GC分类器
GC分类器 GC 分类与性能指标 Java不同版本新特性 垃圾回收器分类 评估 GC 的性能指标 指标 吞吐量(throughput) 暂停时间 吞吐量 vs 暂停时间 不同的垃圾回收器概述 垃圾收集 ...
- Java GC(垃圾回收)机制知识总结
Java GC系列 Java关键术语 Java HotSpot 虚拟机 JVM体系结构 Java堆内存 启动Java垃圾回收 Java垃圾回收过程 垃圾回收中实例的终结 对象什么时候符合垃圾回收的条件 ...
- 面试题:java GC是在什么时候,对什么东西,做了什么事情?
一.回答:什么时候? 能说明minor gc/full gc的触发条件.OOM的触发条件,降低GC的调优的策略. 分析:列举一些我期望的回答:eden满了minor gc,升到老年代的对象大于老 ...
- 内存与垃圾回收——(十二)GC 日志分析
文章目录 12_GC 日志分析 12.1_GC 常用参数 12.2_日志补充说明 12.3_举例解读日志中堆空间数据 12.4_日志分析工具 12_GC 日志分析 12.1_GC 常用参数 通过阅读 ...
最新文章
- python——赋值与深浅拷贝
- 【Linux】类Unix 操作系统进程监控控制工具 Supervisor
- 网络端口的转发和重定向
- 二分搜索 POJ 3273 Monthly Expense
- SoapUI 请求 https 报 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
- ASP.NET 开发者 开始学习ASP.NET Core 2吧
- 表必须要有主键吗_玄关隔断什么材质好?玄关隔断必须要做吗?
- 【文末福利】如何用精密算法解决未婚妻问题?
- 保存blob到本地_用12行代码提取浏览器自动保存的密码
- python pip下载本地依赖包,并在离线环境中安装,并解决报错ERROR: Could not find a version that satisfies the requirement报错
- Java后端测试概述
- 蓝桥杯 ADV-144算法提高 01背包
- 隐马尔可夫模型及其基本假设
- HTML仿小米官网登陆
- 目标跟踪之MOSSE算法(C++版本配置及原理简介)
- java之final的各种用法
- 网络操作系统和分布式操作系统的区别
- python编程出现:expected an indented block错误。
- 开源硬件的知识产权管理
- 前端失业 3个月,尝试接私单的感触