注:该部分对应的是深入了解java虚拟机的第三章(p84)
1:目前奥内存动态分配和内存回收技术已经相当成熟,我们为什么要还要了解GC和内存分配呢?
A:当需要排查各种内存溢出,内存泄漏问题时,当垃圾收集成为系统达到更高的并发量的瓶颈时,我们需要对这些“自动化”的技术实施必要的监控和调节。
2:垃圾回收关注的是虚拟机内存中那部分的?
A:我们知道程序计数器、虚拟机栈、本地方法栈这3个区域随线程而生,随线程而灭,线程结束内存也就跟着回收了;但是java堆和方法区就一样了,堆中存的是实例,方法去中存在类和方法的一些信息,我们有时候只有方法运行时才知道创建多少对象,因此这部分的内存的回收都是动态的,所以垃圾回收关注的也主要是这部分的内存。
3:引用计数法有什么弊端?
A:如果两个对象,如A和B 相互引用,其他对象均没有用到A和B,那么其实A和B这2个对象已经不需要了,但是由于一直相互引用会导致A和B 都无法被回收,java中用的是可达性算法。(p87)