标签:Full GC

Java

记一次FullGC的排查经历–从FullGC日志到业务代码

5

尖兵 发布于 2020-07-26

问题的发生 简单介绍下我们服务的背景,我们的服务是一个使用类似dubbo的RPC框架以及若干Spring全家桶组合起来的微服务架构,大致结构可以参考下图。 Java服务使用的是CMS的垃圾回收器。 某天突然收到一台实例(即一个Java应用)产生FullGC日志的报警,如上图红色标...

阅读(472)评论(0)赞 (0)

Java

JVM内存模型系列(堆、方法区以及对象和GC)

23

Harries 发布于 2020-07-26

上文已经介绍了JVM内存模型中线程私有的部分(虚拟机栈、本地方发栈、程序计数器),那么本篇文章就来探讨下JVM中线程共享的区域:堆、方法区 方法区 方法区是JVM规范中定义的一个逻辑内存,在JDK1.8以前对方法区的实现叫做“永久代”,然而在JDK1.8以后讲“永久代”废弃,改为...

阅读(455)评论(0)赞 (0)

Java

Java垃圾回收详解

14

Harries 发布于 2020-07-25

1.GC介绍 什么是垃圾回收(GC)? 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。 在 Java 虚拟机的语境下, 垃圾 指的是死亡的对象所占据的堆空间。 Java 虚拟机中的垃圾回收器采用 可达性分析 来探索所有存活的对象。它从一系...

阅读(64)评论(0)赞 (0)

Java

JVM系列-读懂 GC 日志

4

xiaoli.wang 发布于 2020-07-25

Java 生态发展到今天,JVM (Java Virtual Machine)的价值可能已经超过了 Java 语言本身。 而 GC (垃圾回收)机制也是 JVM 的核心之一,在程序运行的过程中,GC 的过程会以日志的形式记录下来,看懂 GC 日志是研究 GC 机制的基础,GC日志...

阅读(56)评论(0)赞 (0)

Java

JVM-运行时数据区—方法区

9

xiaoli.wang 发布于 2020-07-25

在jdk7及以前,习惯上把方法区称为永久代。jdk8开始,使用元空间取代了永久代。 本质上,方法区和永久代并不等价。仅是对hotSpot而言的。《java虚拟机规范》对如何实现方法区,不做统一要求。例如:BEA JRockit/IBM J9中不存在永久代的概念。 现在看来,当年使...

阅读(38)评论(0)赞 (0)

Spring

一次容器化springboot程序OOM问题探险

6

changyuan.xu 发布于 2020-07-24

背景 运维人员反馈一个容器化的java程序每跑一段时间就会出现OOM问题,重启后,间隔大概两天后复现。 问题调查 一、查日志 由于是容器化部署的程序,登上主机后使用docker logs ContainerId查看输出日志,并没有发现任何异常输出。使用docker stats查看...

阅读(28)评论(0)赞 (0)

Java

一次年轻代GC长暂停问题的解决与思考,再学一遍JVM吧

7

xirruiqiang 发布于 2020-07-23

问题描述 公司某规则引擎系统,在每次发版启动会手动预热,预热完成当流量切进来之后会偶发的出现一次长达1-2秒的年轻代GC(流量并不大,并且LB下的每一台服务都会出现该情况) 在这次长暂停之后,每一次的年轻代GC暂停时间又都恢复在20-100ms以内 2s虽然看起来不长,但是对比规...

阅读(56)评论(0)赞 (0)

Java

10种常见OOM分析——手把手教你写bug

9

刘莉莉 发布于 2020-07-21

点赞+收藏 就学会系列,文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱,笔记自取 在《Java虚拟机规范》的规定里,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能。 本篇主要包括如下 OOM ...

阅读(66)评论(0)赞 (0)

Java

JDK核心JAVA源码解析(4) – 堆外内存、零拷贝、DirectByteBuffer以及针对于NIO中的FileChannel的思考

11

hanze 发布于 2020-07-20

想写这个系列很久了,对自己也是个总结与提高。原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。 本篇文章针对堆外内存与DirectBuffer进行深入分析,了解Jav...

阅读(48)评论(0)赞 (0)

Java

重大事故!线上系统频繁卡死,凶手竟然是 Full GC ?

4

xirruiqiang 发布于 2020-07-19

通常来说,一个系统在上线之前应该经过多轮的调试,在测试服务器上稳定的运行过一段时间。我们知道 Full GC 会导致 Stop The World 情况的出现,严重影响性能,所以一个性能良好的 JVM,应该几天才会发生一次 Full GC,或者最多一天几次而已。 但是昨天晚上突然...

阅读(69)评论(0)赞 (0)

Java

Jvm知识点

5

xiaoli.he 发布于 2020-07-19

就算你躺在沙发上三天不起,拉不开窗帘,因为决定不了穿哪双袜子哭个没完,我也不会停止爱你. 前言 面试的时候 必问JVM ,淦!咱们准备好好复习吧,加油!奇怪的知识又增加了呐. 1. JVM内存模型 根据JVM规范,JVM 内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈五个...

阅读(40)评论(0)赞 (0)

Java

JVM&GC-通用术语

尖兵 发布于 2020-07-19

G1是一个并行回收器,他把内存分割为很多不相关的区间(Region),每个区间可以属于老年代或者年轻代,并且每个年代区间可以是物理上不连续的。垃圾回收时都是需要停下应用程序,不然没有办法防止应用程序的干扰,然后G1 GC可以集中精力在垃圾最多的区间上,并且只费一点点时间就可以清空...

阅读(24)评论(0)赞 (0)

Java

JVM&GC-System.gc()方法

1

likai 发布于 2020-07-19

在默认情况下,System.gc()会显示直接触发Full GC,同时对老年代和新生代进行回收。而一般情况下,垃圾回收应该是自动进行的,无需手工触发,否则就太麻烦了。 示例 public class TestGC { public static void main(String[...

阅读(67)评论(0)赞 (0)

Java

JVM 有 Full GC,为什么还会出现 OutOfMemoryError呢?

2

puefu.he 发布于 2020-07-19

平时有逛知乎的习惯,一般对JVM相关话题比较感兴趣。偶然看到这个问题,结果发现了一个很有意思的回复。 问题: 既然在触发Full GC的时候,年老代和持久带都会被清理,那么为什么还会出现OOM问题? 而且,对于强引用,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryE...

阅读(31)评论(0)赞 (0)

Java

一次 Java 内存泄漏排查过程,值的一看!

5

yeseng 发布于 2020-07-18

文章封面:成都宽窄巷子 importnew.com/29591.html 在一个凄凉的午夜 一定是网络的问题 一定是 GC 的问题 一定是内存泄漏 真有这么糟糕吗? 还是不行 那现在是怎么回事? 修复由修复引起的问题 再次优化 GC 结论 人人都会犯错,但一些错误是如此的荒谬,我...

阅读(65)评论(0)赞 (0)

Java

【017期】JavaSE面试题(十七):JVM之内存模型

2

邓龙华 发布于 2020-07-17

开篇介绍 大家好,我是 Java最全面试题库 的提裤姐,今天这篇是面试系列的第十七篇,主要总结了JavaSE中 JVM 相关面试题,这篇是JVM系列的第一篇,主要讲解 JVM的内存模型 ,第二篇主要讲解垃圾回收。在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做...

阅读(47)评论(0)赞 (0)

Java

什么是空间担保?

尖兵 发布于 2020-07-16

简单解释 内存分配的一种机制,Young区空间容纳不了对象时会把对象放到Old区,所以称之为Old区给Young区的空间做担保。继续联想。。。。java堆内存会使用谁来做空间担保呢? 官方解释 在发生Minor GC之前,虚拟机必须先检查老年代最大可用的连续空间是否大于新生代所有...

阅读(44)评论(0)赞 (0)