我在很多地方读过,但没有找到一个我可以了解的地方:
java垃圾收集到底是怎么回事?
它是如何实现的?
它是什么时候以及如何调用的?
为了回收内存,需要遵循哪些算法?
简而言之,关于它的一切:)
已修复!
发布于 2010-11-10 13:00:28
非常简短的答案是:
java垃圾收集到底是怎么回事?
GC是一种内存管理机制,其中系统(在本例中为JVM )负责自动回收不再使用的内存。
它是如何实现的?
有多种方法可以实现它。一个简单的描述是,跟踪分配的每一块内存。系统周期性地检查分配的部分,看看程序的任何部分(变量)是否仍然可以到达内存。任何无法访问的内存都会被回收。
何时以及如何调用它?
这也是留给实现的。在Java语言中,惟一的保证是在抛出OutOfMemoryError之前,系统将尝试回收内存。我希望大多数GC实现在向底层操作系统请求更多内存之前,也会尝试进行收集。通常,会有一个后台线程来处理收集器的运行。
为了回收内存,遵循什么算法??
有几种可能的方法。看看其他人发表的文章,作为这方面的起点。
发布于 2010-11-10 12:37:22
关于垃圾收集的维基百科条目涵盖了您的所有问题:
http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
发布于 2010-11-10 13:20:29
...简而言之,关于它的一切:)
如果你有一个好的图书馆,看看这本关于垃圾收集的优秀而全面的书:
Richard Jones和Rafael Lins,垃圾收集:自动动态内存管理的算法,Wiley and Sons (1996年),ISBN 0-471-94148-4
此外,这本书还在印刷中,并在至少一家知名的在线书店上市。多买点东西。它是新的,价格范围很广,低至25美元的二手。
https://stackoverflow.com/questions/4141237
复制相似问题