1.JVM的内存模型介绍一下? JVM内存模型里的堆和栈有什么区别?栈中存的到底是指针还是对象?
2. 堆分为哪几部分呢?如果有个大对象一般是在哪个区域?
为什么需要两块Survivor区域?按照你的思路往下走,eden区,S1,第一次的回收的时候,标记复制,把eden区域的存活对象复制到S1,那么现在开始第二次垃圾回收,把eden的存活对象复制到S1。那么问题来了,其实这个时候S1的区域其实有些对象已经死了,也需要回收,怎么办?所以这个时候权衡一下,我们需要两块区,S1,S2。第二次的时候,针对S1和eden区域进行标记复制,复制到S2区域。后面第三次 怎么做,我就不写了。
3.程序计数器的作用,为什么是私有的?方法区中的方法的执行过程?方法区中还有哪些东西?
4.String保存在哪里呢?String s = new String(“abc”)执行过程中分别对应哪些内存区域?
5.引用类型有哪些?有什么区别?弱引用了解吗?举例说明在哪里可以用?
6.内存泄漏和内存溢出的理解?jvm 内存结构有哪几种内存溢出的情况?有具体的内存泄漏和内存溢出的例子么请举例及解决方案?
7.创建对象的过程?对象的生命周期?类加载器有哪些?双亲委派模型的作用?讲一下类加载过程?讲一下类的加载和双亲委派原则
8.什么是Java里的垃圾回收?如何触发垃圾回收?判断垃圾的方法有哪些?垃圾回收算法是什么,是为了解决了什么问题?垃圾回收算法有哪些?
9.垃圾回收器有哪些?标记清除算法的缺点是什么?垃圾回收算法哪些阶段会stop the world?minorGC、majorGC、fullGC的区别,什么场景触发full GC?垃圾回收器 CMS 和 G1的区别?什么情况下使用CMS,什么情况使用G1?G1回收器的特色是什么?GC只会对堆进行GC吗?