程序员的自我修养
Home » 标签 » gc

gc老生常谈

0条评论2,465次浏览

算是笔记吧。看了很多次的jvm、gc,但都没记住。这次遇到了自己写得线上服务出现了oom+死锁+频繁full gc(扶额),总算是记住了jvm和gc的基础知识。也是醉了。

jvm模型

主要分3个模块吧:堆、栈、本地方法栈。

堆=young(eden + survivor(from + to)) + tenured + permanent,也有说permanent不属于堆的,不过从gc日志来看我更倾向前者,但从gc参数来看应该是后者。

结合java8的gc来看:

young

par new generation就是新生代young,其大小等于eden区+from/to区,注意这里不是eden+from+to。为什么呢?因为你永远不能同时使用from和to。eden、from和to的比例默认是8:1:1,可以通过参数-XX:SurvivorRatio调节。

新对象的分配发生eden区域内,当新对象(非大对象)无法在该区域分配时便引发Minor GC。大对象放不下的时候直接去tenured区分配。Minor GC就是将eden+from/to的存活对象copy到to/from中去,顺带存活了若干次的会放到tenured区,而且放不下的也会去old区。
(更多…)

分类:Java语言
标签:,
11
profile
  • 文章总数:81篇
  • 评论总数:686条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1611天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论