没有工具怎么玩gc?
你可以买一些儿童玩具。
垃圾收集的想法源于这样一个事实,即编程语言似乎需要无尽的内存。开发人员可以随时分配内存,这就像魔术一样,永远不会失败。
当然,机器的内存不可能是无限的。所以解决方法是,当程序需要分配内存,意识到内存不足时,就开始垃圾回收。
在这里,“垃圾”指的是已经分配但不再使用的内存。为了让记忆看起来取之不尽,语言本身应该对什么是“不再使用”非常谨慎。否则,当你的程序将要访问那些对象时,你就必须回收它们,这可不是闹着玩的。为了被垃圾收集,语言本身必须确定这些对象不能再被程序使用。如果你不能得到对象的引用,你当然不能使用它们。那么定义什么是“在用”就非常简单了:
1.如果一个对象被作用域中的变量引用,那么它正在使用中;
2.如果一个对象被一个正在使用的对象引用,它也在使用中。
第二个规则是递归的。如果对象A被一个变量引用,并且它有一个引用对象B的字段,那么B也在使用中,因为您可以通过..
最后,有一个可达对象图。从一个变量开始,你可以遍历所有的对象。不在这个可达对象图中的对象对程序没有用,所以它占用的内存可以回收。