美文网首页
java虚拟机 —— 垃圾回收机制

java虚拟机 —— 垃圾回收机制

作者: 程序员Maria | 来源:发表于2020-07-24 17:34 被阅读0次

1. 什么是java虚拟机

java虚拟机我们简称(jvm) 是java virtual machine 的简写,它是java虚构出来的计算机,有自己的指令集,寄存器和堆栈内存。它屏蔽了java应用程序与具体的操作平台相关的信息,java程序只需生成jvm的目标代码既字节码,jvm通过对字节码的解释最终转化为具体平台的指令,实现了java的 跨平台。

2. jvm中的垃圾回收机制

什么是垃圾回收机制

在java的虚拟机当中,在我们进行实例化的时候,堆会给我们开辟新的空间存放实例。而由于堆,方法区是线程公有,不会像栈区一样随着线程的销毁而销毁。因此在java虚拟机中必须要有垃圾回收的机制,定时清理内存,防止内存溢出的情况。

哪些运行时数据区中的哪些内存需要被GC(垃圾回收)

虚拟机栈,本地方法栈中的内存会随着线程的销毁而清空,而方法区和堆不会自动情况这是垃圾收集器所关注的部分,因此需要JVM进行垃圾回收。

3. 如何判断哪些内存需要被回收

3.1 引用计数算法。

当创建对象实例时候,就会给该变量的实例创建一个计数器,初始值为1。当其他变量用这个对象进行赋值的时候,这个对象的变量就会+1。当这个对象过了生命周期或者赋了新的值后,该计数器就会减1.当计数器的值为0,该对象也就会被回收。

优点:对线程的运行影响不大,而且执行快。

缺点:无法检测循环的引用。如父对象引用子对象,子对象引用父对象这种情况下计数器不可能为0,也不可能被回收。

3.2 可达性算法

可达性算法的算法思路。他就像一颗树,不断的进行引用,假设从A作为一个根开始,引用链B和C然后B和C又引用链到D和E。当有对象没有被引用链的时候,就会出现对象不可达的情况,此时就代表对象是不可用的,它就会被当做垃圾回收处理掉。

方法区的垃圾如何回收?

1、废弃常量。

如何判断废弃常量呢?以字面量回收为例,如果一个字符串“abc”已经进入常量池,但是当前系统没有任何一个String对象引用了叫做“abc”的字面量,那么,如果发生垃圾回收并且有必要时,“abc”就会被系统移出常量池。常量池中的其他类(接口)、方法、字段的符号引用也与此类似。

2、无用的类。

如何判断无用的类,满足一下三个条件。

1、该类的所有实例被回收。堆中没有该类的任何实例。

2、加载该类的ClassLoader被回收。

3、该类对于的java.lang.Class对象没有在任何地方被引用,任何地方无法通过放射调用该方法。

以上就是个人对jvm中GC的理解,如若有误,欢迎大佬指导!

评论区评论“ 学习 ”,即可免费获取一套学习资料!私信小编也可获取

相关文章

  • Java垃圾回收

    本文主要摘自《深入理解Java虚拟机》,内容较多,尽量全面概括了 Java 垃圾回收机制、垃圾回收器以及内存分配策...

  • Java垃圾回收详解

    深入理解 Java 垃圾回收机制 深入理解 Java 垃圾回收机制 一:垃圾回收机制的意义 java 语言中一个...

  • JVM中垃圾收集算法及垃圾收集器详解

    Java中的垃圾回收机制,一直是Java的一大特性,不需要自己回收,Java虚拟机会自动处理。但是我们仍要理解垃圾...

  • JVM中垃圾收集算法及垃圾收集器详解

    Java中的垃圾回收机制,一直是Java的一大特性,不需要自己回收,Java虚拟机会自动处理。但是我们仍要理解垃圾...

  • Java 内存区域和GC机制

    Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与...

  • JVM怎么判断对象是否已死?

    Java虚拟机中有着垃圾回收机制,自动帮我们回收对象,不需要自己手动实现垃圾回收。那么JVM中的垃圾收集器是如何判...

  • 对象是否已死?看看JVM是怎么判断的

    Java虚拟机中有着垃圾回收机制,自动帮我们回收对象,不需要自己手动实现垃圾回收。那么JVM中的垃圾收集器是如何判...

  • JVM07 JVM是如何回收垃圾的?

    免费的其实是最贵的,Java 虚拟机自带自动机制的内存管理、垃圾回收,但这种自动机制会带来不少与垃圾回收实现相关的...

  • JVM垃圾回收机制

    JVM垃圾回收 整体思维导图 带着问题理解JVM垃圾回收机制 Java为什么需要垃圾回收机制; 回收哪部分垃圾; ...

  • java内存结构和GC机制

    Java垃圾回收概况 Java GC(Garbage Collection,垃圾回收)机制,是Java与C++/C...

网友评论

      本文标题:java虚拟机 —— 垃圾回收机制

      本文链接:https://www.haomeiwen.com/subject/aclslktx.html