当前位置:网站首页>JVM垃圾回收概述

JVM垃圾回收概述

2022-07-06 09:30:00 机智的爆爆哥

带着问题学习更有益于集中我们的注意力,我带着问题来展开这一篇章。

1. 什么是垃圾?

简单的问题,但往往很多人都答不上来,这就是思维上的一种误区,好了不多bb了。

简单来讲,当一个对象没有被任何引用指向,那它就成为了垃圾,如果一个人不被任何人所需要,那他就是垃圾了(例子不好,狗头保命)。

当这样的垃圾多了,而没有被及时的清理,就很容易造成内存溢出了。

2. 为什么需要垃圾回收?

跟生活联系起来,如果垃圾始终放在那里,那么日积月累,房间就变成垃圾堆了,还能住人吗?

对于程序也是这样,最终内存被消耗殆尽,只剩下一堆无用的对象,白白浪费的资源。

而一旦有了垃圾回收,无用对象被清理,多出来的空间又可以存放新的对象了。

3. 早期的内存管理

我们都知道,Java有着自动垃圾回收的机制,这也是C,C++程序员所羡慕的一点,因为他们需要进行手动内存申请,内存释放,而如果忘记释放,就会造成内存泄漏。

什么是内存泄漏?

如果一个对象没有引用指向了,那就是无用对象,但是由于某种原因,并没有被垃圾回收,这就是内存泄漏

4. Java的自动内存管理

自动的垃圾回收机制使得我们Java程序员无需申请或者释放内存,但是这也弱化了我们在内存溢出时处理问题的能力,所以了解垃圾回收机制对于我们来说还是极为重要的,我们可以借助一些监控或者调优的工具来解决对应的问题。

这里需要强调,GC和OOM只会发生在堆空间和方法区,而方法区的垃圾回收是没有强制规定的,有些JVM其实没有对方法区进行垃圾回收,但是我们默认的HotSpot还是会有的。

垃圾回收重点关注新生代,较少收集于老年代,几乎不动方法区,切记切记!!!

原网站

版权声明
本文为[机智的爆爆哥]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44353507/article/details/121851096