这么变态的题目都会出,这个公司不是对正常运行的空间要求很严格,就是人品...第一题,本身gc作为jvm的一部分机制,只要jvm运行正常,它也就没问题。真到无法gc的地步,看来不是要增加硬件容量,就是降低应用对性能的要求,如果连gc(jvm)都保证不了,那只有exit(0)了。没见着"not enough memory..."或者"not enough space to..."错误发生的时候,结果是轻则应用停止重则系统重启。
第二题,更加变态,如果是递归就算了,本身就不提倡这样,如果不设有终止条件,那只有死循环,直到资源耗尽。当然,能正常终止的应用产生的实例,因为系统不再使用,符合回收条件,当然会正常回收。至于回收时刻,不予讨论。

解决方案 »

  1.   

    2题,不太清楚。
    先把a,b添加到一个集合中,
    如果 没有第三者C 引用 a 或者b ,则 集合{a,b} 可回收,如果c 引用了,则把c 也加入到 a ,b 的集合{a,b,c}。
    继续检测该集合。是否有引用。依次类推。
      

  2.   

    1,应该是out of memory, jvm崩溃吧;gc是一个功能,要执行肯定要内存的;但是jvm其实可以保留gc运行必须的至少内存,保证可以执行gc,但是jvm实际上是否这样处理就不清楚了
    2,这个应该是不会回收的啊
    b=new object;
    a=b;
    b=a;
    这里的b是用来混淆我们的,其实都是指向这个new object,所以不会回收