![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 59
STAR_AX
好心态才有好状态。
展开
-
Java对象的分配过程
首先尝试在栈上分配,如果分配不下,进入堆内存。 进入堆内存之后,如果对象大小超过年轻代大小,则会直接进入Old区。 如果小于,则会尝试在线程TLAB区分配,如果分配不下,进入Eden区。 进入Eden区之后,经过一次YGC之后,活着的对象进入Survior0区。 再次YGC,Eden +Survior0区活着的对象进入Survior1区。 再次YGC,Eden +Survior1区活着的对象进入Survior0区。 对象年龄足够(Parallel Scavenge —>15 ,CMS—>5,G.原创 2021-05-22 11:14:48 · 203 阅读 · 0 评论 -
三色标记算法
三色标记算法 CMS并发标记使用的算法是三色标记,把对象在逻辑上分成三种颜色,如下图 如下图,一个对象A,他所引用的对象B是灰色的的,说明B已经被标记了,而A自身也被标记了,所以A就变成黑色的了,就说明它自身和它的成员变量都已被标记完成。B对象里有一个引用指向了白色的对象C,白色是代表没有被标记的对象,所以B就是灰色的,说明它只是自身被标记了,而它的成员变量没有被标记,而C对象就是白色的,说明是没有被标记的,是会被当成垃圾回收的。 漏标: 漏标是指,本来是存活的对象,但是由于没有被标记到,所以被当成垃圾原创 2021-06-07 22:51:05 · 222 阅读 · 0 评论 -
CMS垃圾收集器
CMS(Concurrent Mark-Sweep)是一个里程碑式垃圾收集器,因为之前的垃圾回收器线程在工作的时候,工作线程是不能工作的,是STW的,而CMS是可以和工作线程同时运行的,CMS主要用于老年代回收,主要算法是标记—清除。 JVM参数加上-XX:+UseConcMarkSweepGC表示老年代垃圾回收器采用CMS CMS运行过程可以大致分为4个阶段 inital mark concurrent mark remark concurrent sweep 第一个阶段inital mark初始标原创 2021-06-03 23:35:19 · 158 阅读 · 0 评论 -
查找,定位JVM运行中的问题
使用top 命令观察问题:比如内存不断增长,CPU占用率居高不下。 使用top -Hp pid(进程号) 观察进程中的线程,哪个线程CPU和内存占比高。 使用 jps 命令可以列出当前系统下所有运行的Java进程。 使用 jstack 命令 定位线程的堆栈 ,示例图如下, 重点关注线程状态java.lang.Thread.State 死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Wait..原创 2021-05-30 23:59:08 · 190 阅读 · 0 评论