所谓jvm垃圾回收机制其实就是相较于于c、c++语言的优势之一是自带垃圾回收器,垃圾回收是指不定时去堆内存中清理不可达对象。垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,程序员唯一能做的就是通过调用System.gc 方法来建议执行垃圾收集器。
为什么需要垃圾回收
如果没有进行垃圾回收,那么内存肯定会被消耗完的,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。
jvm垃圾回收机制的原理
在JVM运行时数据区存在一个堆区, 堆是一个巨大的对象池。在这个对象池中管理着数量巨大的对象实例,而池中对象的引用层次,有的是很深的。一个被频繁调用的接口,每秒生成对象的速度,是很大的,同时,对象之间的关系,形成了一张巨大的网。
Java 一直在营造一种无限内存的氛围,但对象不能只增不减,所以需要垃圾回收;那 JVM 是如何判断哪些对象应该被回收?哪些应该被保持呢?这就要用到JVM的垃圾回收机制了,也就是我们常说的GC(Garbage Collection),也叫垃圾收集器。
对象被标记为垃圾方法
JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,因此这几个区域的内存分配和回收都具备确定性,就不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。而Java堆区和方法区则不一样,这部分内存的分配和回收是动态的,正是垃圾收集器所需关注的部分。
以上就是什么是jvm垃圾回收机制?关于垃圾回收机制详情介绍的相关内容。