java - 当我们说对象由垃圾收集器或 GC 收集时,在 JVM 或内存级别会发生什么?

标签 java garbage-collection jvm

当我们说对象被 GC 回收时。它在后台真正做了什么?它会删除特定对象占用的所有数据吗?或者只是将对象使用的内存区域标记为“可重用”,以便无论何时创建新对象,它们都会在该内存区域上被覆盖?

最佳答案

memoris 像树一样被垃圾收集器映射。在垃圾收集之后,内存链接(即树的节点)从树中删除。因此,如果有一个节点与 gc roots 没有任何联系,则意味着这些内存是免费的。这些可以被其他用途使用。

这实际上很难用一句话来描述,与其重新发明轮子,我建议您阅读以下链接以了解 gc 的工作原理

http://javabook.compuware.com/content/memory/how-garbage-collection-works.aspx.http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html

关于java - 当我们说对象由垃圾收集器或 GC 收集时,在 JVM 或内存级别会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20880231/

相关文章:

java - 如何模拟服务的一部分并测试其他部分?

java - 从 java web start 使用 CXF web 服务

Java fork/join 框架逻辑

c# - 启动一个新线程——我需要关心垃圾回收吗

java - Java 服务包装器的 JVM 错误

java - Web 服务将参数传递到另一个类/项目

java - 更改对象和垃圾收集器的引用

c++ - RAII 与垃圾收集器

Java 崩溃 Windows

java - 通过公共(public)查找检索数组克隆方法句柄