jvm 教程动画版

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

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

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

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

我们下载项目跑起来
1.png
2.png

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

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

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

这时候我们看一下代码中jvm 的配置
4.png

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

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

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

由此我们可以得出

伊甸园80

幸存者0:10

幸存者1:10

老年代:200

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

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

我们再接着往下面跑。
5.png
6.png
我们看到对象,从su0 到su1 , 并且38 号对象被回收两次。所以他的年龄就是2

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

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

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

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

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

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

相关文章
|
5月前
|
前端开发 JavaScript 算法
尚硅谷JVM全套教程
尚硅谷JVM全套教程
|
6月前
|
算法 数据可视化 Java
深入理解JVM系列教程(完) - 终章总结
深入理解JVM系列教程(完) - 终章总结
35 0
|
6月前
|
Java 编译器
深入理解JVM系列教程(12) - 热部署
深入理解JVM系列教程(12) - 热部署
58 0
|
6月前
|
监控 数据可视化 Java
深入理解JVM系列教程(09) - JDK可视化工具
深入理解JVM系列教程(09) - JDK可视化工具
28 1
|
6月前
|
数据采集 监控 算法
深入理解JVM系列教程(07) - 垃圾收集器
深入理解JVM系列教程(07) - 垃圾收集器
33 0
|
6月前
|
Java
深入理解JVM系列教程(06) - 内存溢出与泄漏
深入理解JVM系列教程(06) - 内存溢出与泄漏
35 0
|
6月前
|
存储 Java 编译器
深入理解JVM系列教程(02) - Java内存结构
深入理解JVM系列教程(02) - Java内存结构
146 0
|
6月前
|
存储 安全 前端开发
深入理解JVM系列教程(11) - 类加载器
深入理解JVM系列教程(11) - 类加载器
57 1
|
6月前
|
Java API Apache
深入理解JVM系列教程(10) - 字节码技术
深入理解JVM系列教程(10) - 字节码技术
44 1
|
6月前
|
搜索推荐 Java 应用服务中间件
深入理解JVM系列教程(08) - Tomcat调优配置
深入理解JVM系列教程(08) - Tomcat调优配置
65 0