【JVM系列1】JVM内存结构
主要讲述JVM内存结构,以及简单的调优场景。
前言
JVM系列应该属于Java高阶的内容,本来是想等Java基础知识积累一段时候之后再学习,但是因为工作中需要跟进线上问题,所以急需补充这块知识,本文主要是对学习的知识简单做个记录,然后再记录分析问题的过程。
JVM问题
刚转到小米人事部门,发现线上的2台机器一直在GC,而且频率非常高,下面是GC的日志:
如果需要看懂这个GC日志,下面的内容就一定需要掌握。
垃圾回收算法
如何确定对象已死?
通常,判断一个对象是否被销毁有两种方法:
- 引用计数算法: 为对象添加一个引用计数器,每当对象在一个地方被引用,则该计数器加1;每当对象引用失效时,计数器减1。但计数器为0的时候,就表白该对象没有被引用。
- 可达性分析算法: 通过一系列被称之为“GC Roots”的根节点开始,沿着引用链进行搜索,凡是在引用链上的对象都不会被回收。
就像上图的那样,绿色部分的对象都在GC Roots的引用链上,就不会被垃圾回收器回收,灰色部分的对象没有在引用链上,自然就被判定为可回收对象。
那么,问题来了,这个GC Roots又是什么?下面列举可...
热门评论
6 条评论
回复