java提供了一个说明:
假设已经存在一个指针指向了一个具体实例:A a=new A();
如果a这个指针超出了他的作用域,则刚才的new A()处于可回收状态;
如果a这个指针放弃了new A()的引用,也就是说new A()不再有指针引用他,则new A()处于可回收状态
这个规则我是明白了,但是就是搞不懂他具体的内部实现是怎么实现的
1、指针的存储位置在哪里?2、实例的存储位置在哪里?3、jvm如何去查找哪些实例处于可回收状态?4、jvm如何确定可回收资源的范围?(根据指针可以确认可回收下界,但可回收上界如何确认?)5、如何保证回收后的存储资源是连续的?(如果回收后存储资源不是连续的,那么回收后的存储资源也不一定就是实际可用的,会降低存储资源的使用效率,我想java开发人员还没有到忽略这个问题的地步吧?)6、对于通过反射创建的实例,为什么不能采用自动回收的机制?而要调用System.gc()强制唤醒回收机制?
跪求各位对于内存回收方式有了解的大虾指点!~
引用: 引用 1 楼 huntercao 的回复:
这个.....发错地方了吧?
不管有没有错,顶顶吧,呵呵,自己不懂,只能这样了。