`
- 浏览:
362242 次
- 性别:
-
一、谁在做Garbage collection
垃圾回收机制是放在JVM中,由JVM来负责回收垃圾,我们只需要创建对象来分配空间,当对象无用时则不用担心空间回收的问题。
二、对象什么时候被回收
对象的生命周期与作用域无关,与引用有关。当一个对象被多个引用所指向,当该对象不再有任何引用指向它时,这个对象就被抛弃了,就可以被垃圾回收机制回收。比如当某个对象不存在任何引用时,引用告诉jvm你可以回收这个对象了,它对于我来说没有用了。
当jvm的垃圾回收机制对堆空间做检测时,发现某个对象的引用数为0时,就会把这个对象列入待回收列表中,并不是马上就销毁。
当一个对象被认为没有必要存在了,则会释放它占用的内存,被释放的内存可以再分配。但是并不是立刻就被回收的,jvm进程做空间回收有较大的系统开销,如果一个对象被丢弃就立刻回收它,会使整个应用的运转效率非常低下,jvm的垃圾回收机制有很多算法,除了引用计数法用来判断对象是否被抛弃外,其他算法是用来确定何时与如何做回收。为了提高效率,垃圾回收器通常在满足两个条件才运行:有对象要被回收,系统需要回收。因此运行时系统只在需要的时候才使用它,所以你不知道垃圾回收发生的准确时间。
三、没有引用指向的对象有用么?
没有引用指向的对象是要被回收的,是堆空间里的一个垃圾。但是有个例外,对于一次性使用的对象(临时对象)。可以不用引用变量指向它。例如:System.out.print("I like Java");就是创建了一个字符串对象后,无引用指向,直接传递给println()方法。
四、应用能干预垃圾回收吗?
这是不能的,对于垃圾回收机制来说,应用只有两个途径发消息给JVM,第一个就是指向某对象的引用全部移除了,这个对象不要了;第二个就是调用方法System.gc()。
对于system.gc()来说这也仅仅是个请求,JVM接受这个消息后并不是立即做垃圾回收,而只是对几个垃圾回收算法做了加权,使垃圾回收操作容易发生,或提早发生,或回收较多而已。
Java的垃圾回收机制是为所有java应用进程服务的,而不是为个特定的进程服务的,所以任何进程都不能命令垃圾回收机制做什么、怎么做或做多少。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
.NET中的内存管理,GC机制,内存释放过程
Java垃圾回收GC机制
Java的GC机制探微.pdf
今天来谈谈C#的GC,也就是垃圾回收机制,非常的受教,总结如下 首先:谈谈托管,什么叫托管,我的理解就是托付C#运行环境帮我们去管理,在这个运行环境中可以帮助我们开辟内存和释放内存,开辟内存一般用new,内存是...
##Android GC机制实践调研 ================ 众所周知,java GC 是影响Android应用性能的主要因素之一。完全交给系统管理的GC往往不尽如人意,而开发者却也毫无办法,只能对着GC迎合啊迎合,想着办法把GC哄开心了呗~...
NET中的内存管理,GC机制,内存释放过程汇编.pdf
Survivor区:当Eden区满之后,MinorGc机制会清理无引用状态的对象,并将GCRoot对象复制到Survivor区其中一个区内 GCRoot:就是指当前仍在直接引用的对象,GCRoot对象所引用的全部对象会形成一个GCRoot链 new对象 ...
NULL 博文链接:https://xdjava.iteye.com/blog/2031254
随着 Node 的发展,JavaScript 的应用场景早已不再局限在浏览器中。但随着 Node 在服务端的广泛应用,JavaScript 的内存管理需要引起我们的重视。下面我们来一起学习一下吧
GC的前世与今生 什么是GC 一、Mark-Compact 标记压缩算法 二、 Generational 分代算法 三、Finalization Queue和Freachable Queue 托管资源 and 非托管资源: .NET的GC机制有这样两个问题. GC 10个注意事项:
主要介绍了Java GC 机制与内存分配策略详解的相关资料,需要的朋友可以参考下
gc回收机制
java垃圾回收(gc)机制详解
通过关闭Python垃圾回收(GarbageCollection,GC)机制(通过回收和释放未使用的数据来回收内存),Instagram的性能可以提高10%。是的,你没有听错!通过禁用GC,我们可以减少内存占用并提高CPULLC缓存命中率。如果...