前言:最近一直面试,发现问JVM的尤其多。所以整理一下遇到过的面试题来做下记录
1.JVM的内存分配
2.JVM的垃圾回收机制
分代回收。不同对象生命周期不同。放在不同的代上。采用最合适的方式回收。
分为三个:
年轻代:新对象
年老代:在年轻代里经历了多次回收还存在的对象
持久代:用于存放静态文件
3.何时触发
1)GC在优先级最低的线程中运行,一般在应用程序空闲即没有应用线程在运行时被调用。
2)Java堆内存不足时,GC会被调用。
4.说一下强引用,软引用,弱引用,虚引用以及他们之间和gc的关系
强引用:new出的对象之类的引用,只要强引用还在,永远不会回收
软引用:引用但非必须的对象,内存溢出异常之前,回收
弱引用:非必须的对象,对象能生存到下一次垃圾收集发生之前。
虚引用:对生存时间无影响,在垃圾回收时得到通知。