jvm_1:如何直观的认识jvm

前言

最近,一个同事说自己在学习jvm,但看了几套视频下来,也翻阅了一些书籍,总觉得jvm还是“虚拟”的,总觉得自己认识的不够直观。回想到自己刚开始学习的时候,也是因为学习方法的不对,而耗费了太多的学习的时间。下面,就给大家直观的介绍一下jvm。

1.约见JVM

大多数人没能够直观的认识jvm是因为我们认识他的时候都是通过模型图(如下),而且在项目开发的时候也不知道它是怎么工作的,GC(垃圾回收)?我怎么没感觉到?
jvm运行是数据区
接下来我来带大家认识一下这位神秘嘉宾–jvm
其实jdk已经提供了一个叫“jvisualvm”的程序能够让我们直观的观察jvm的运行情况。我们可以先启动季的项目,在你所用的jdk下的bin文件下,找到并打开jvisualvm.exe文件:
jvisualvm运行界面
在这里,你可以看到之前认识的堆内存,线程,cpu的实时运行情况。

2.观察JVM 的GC动作

jvm知识点中,除了他的运行是数据区外,还一个重要的就是GC(垃圾回收)了,如果想看到项目在运行时的GC动作,可以在jvm配置参数中加上 -XX:+PrintGCDetails 参数:
配置jvm参数
我们知道,gc分为两种,并且他们有各自的工作范围:

  • 新生代GC(Minor GC):指发生新生代的的垃圾收集动作,Minor GC非常频繁,回收速度一般也比较快。
  • 老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC经常会伴随至少一次的Minor GC(并非绝对),Major GC的速度一般会比Minor GC的慢10倍以上。

接下来,就可以通过控制台中监控的信息来验证以上的结论,一下是后台截图:
GC日志
上面我们可以看到,minor gc 比较频繁,而full gc 就比较少了,当然,如果想看到full gc,可以在jvisualvm界面,点击‘执行垃圾回收’按钮,手动执行垃圾回收:
手动垃圾回收
后台结果:
full gc 执行结果
上面有两条日志,分别是minor gc 和full gc ,这也验证了“Major GC经常会伴随至少一次的Minor GC(并非绝对)”这一结论。

再来分析一下打印出来的gc信息,可以发现是有固定格式的,其含义分别是:

  • minor gc信息说明
    minor gc信息说明
  • major gc信息说明
    major gc信息说明

总结

本文主要介绍了了两种学习jvm的辅助方式。希望能帮大家更直观的学习jvm而非纸上谈兵,相信有了这两项技能可以帮大家更容易的理解jvm的知识点。
参考:
-https://blog.csdn.net/ty497122758/article/details/74231560

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值