ThreadLocal 导致Full GC 分析

难得出现了一次Full GC,抓住机会分析了一次。

事件回顾

之前服务线上总共有6台机器,其中2台机器为4核CPU+4G内存,另外4台机器为4核CPU+8G内存。

2017-08-01 早上11:00 开始FullGC报警,同时有两台,均为4G内存机器,其他8G内存机器未发现报警。监控无业务报警及Exception。

接到报警之后,马上摘除了一台机器留作jvm分析,另外一台重启。

dump 机器的堆栈信息

观察重启之后的机器情况,以及其他机器的运行情况,均未发现异常迹象。

事件背景

这个服务已经有超过一周的时间未发布也未重启过,之前一直没有出现过问题。

......

JVM 垃圾回收算法及垃圾回收器

JVM垃圾回收几乎成了Java程序员面试标配了,我自己在被面和面试别人的过程中都曾反复面试这些内容。今天就把之前了解到的垃圾回收知识整理一下。

前几天被面试的时候,就问到JVM垃圾回收,一般面试这个知识的基本就是P6,P7级别了(对标阿里),虽然在实际工作中用到的时候极少,但能当作过滤候选人的初步门槛。

0. 基础概念

对象头(Header)

对象头主要包含两部分信息:

对象的大小

对象的种类。

在Hotspot中对象头也分为两部分内容:

第一部分是存储对象自身的运行时数据

如哈希码(HashCode)、GC分代年龄、锁状态标志、......

JVM学习笔记

这是学习「深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)」时记录的笔记,共享出来。

图片可以直接下载:下载地址。

运行时数据区

程序计数器(ProgramCounter Register)

每个线程都有独立的程序计数器

一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器

虚拟机栈(VM Stack)

线程私有,生命周期与线程相同

每个方法执行时都会创建......