使用jdk自带工具查看gc过程

前言

众所周知,java语言跟c语言最大的一个差别就是内存回收。java语言无需开发者亲自管理内存的分配和回收,而由jvm虚拟机进行内存统一管理。而c语言则需要自行申请内存和归还内存。用一个形象的比喻说明就是,c语言的内存管理像是学校的饭堂,学生就餐完毕需要自己清理桌面和归还餐具,这样的好处就是内存使用完毕后可以及时归还,垃圾内存少,而缺点就是不能保证每一个学生的素质,一旦内存释放不恰当,可能会造成严重后果。java语言的内存管理则像是外面的餐馆,客人就餐完毕离开即可,无需整理餐具,交由清洁工清理,但不好之处在于如果内存清理不及时,会造成后面的客人无法就餐。

java的内存模型图如下(我自己画的,如有不对,帮忙指出):


JMM (1).png

使用jdk自带工具查看gc过程

工具路径:C:\Program Files\Java\jdk1.8.0_161\bin\jvisualvm
双击打开,界面如下


2020-03-02 144522.png

选择java程序


2020-03-02 14452333.png

gc过程(需要安装插件)


2020-03-02 1445233.png
2020-03-02 14452333.png

用此工具看到的gc过程是一个动态的过程,对象从Eden区产生,Eden区满了后进行一次minor gc,回收Eden区和S1(或者S2)区的垃圾对象,将剩余的对象复制到S2(或者S1)区。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容