前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jvm 教程动画版

jvm 教程动画版

作者头像
分享干货的你
发布2022-09-22 11:44:06
3000
发布2022-09-22 11:44:06
举报
文章被收录于专栏:分享干货的你

最近在最大的同性交友网站,找到了一个比较好的jvm教程。地址是这个https://github.com/visualizit/vpoc 。我把它下载下来看了一下源代码。

前后端的通讯使用的是websock,后端是springboot +websockt stomp

前端是websocket js .大家可以下载代码看看。

我们下载项目跑起来

上面的垃圾回收算法,有三个,我们来看第一个默认的年轻代标记复制算法。

我们先来运行一下看一下动画效果。

我们看到年轻代分为伊甸园区,幸存者0区,幸存者1 区。

这时候我们看一下代码中jjvm 的配置

最大对象包括年轻代和老年代=300,

幸存者和伊甸园的比例是1:8,

老年代和年轻代的比例是1:2

由此我们可以得出

伊甸园80

幸存者0:10

幸存者1:10

老年代:200

从图上伊甸园的格子8X10 我们也能看出和我们的猜想是一样的。

首先伊甸园的格子数值是对象的编号,下面幸存者0 和1区的 格子里面有两个数值,第二个是年龄。也就是被回收一次,年龄加一,超过最大年龄就送到老年代。 默认是15 ,现在是3.

我们再接着往下面跑。

我们看到对象,从su0 到su1 , 并且38 号对象被回收两次。所以他的年龄就是2

我们再跑一下

这时候我们再看到38号对象年龄达到了三次,进入了老年代。

因为上一次的144,82,135 在新的一小gc 的时候没有被引用,直接被清理了。所以他们就消失了,只要多次被引用的才会在so-s1 相互复制,最后到old 去。 这个引用关系有两种,可达性算法,和引用计数法。这里就不多说了,大家自己回去看看书吧。

今天的标记复制算法就说到这里了, 记住标记复制算法主要发生在年轻代,因为年轻代的对象多,产生的快。使用标记复制算法最大可用90%的空间。

一个伊甸园区加上幸存者区, 但是这个需要老年代的分配担保。

要是伊甸园区不够,全部进入老年代就直接引发fullgc .

总之jvm 还是挺有趣的,为了方便大家学习,我搞了一个在线的,公众号回复jvm就行。欢迎点赞,转发,收藏。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 分享干货的你 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档