Java面试题分享-JVM

问:介绍下JVM的内存模型
答:JVM 分为堆区和栈区,还有方法区,本地方法栈,程序计数器,初始化的对象放在堆里面,引用放在栈里面,class类信息,常量池,static变量,等放在方法区。

问:GC的常用算法有那些
答:可达性分析算法,引用计数算法,标记-清除算法,标记-整理算法,复制算法,分代收集算法。

问:Minor GC与Full GC分别在什么时候发生
答:新生代内存不够用时候发生MGC,JVM内存不够的时候发生FGC。

问:SafePoint是什么
答:GC的时候必须要等到Java线程都进入到safepoint的时候VMThread才能开始执行GC。

问:GC收集器有哪些
答:CMS收集器:获取最短回收停顿时间,适合互联网站或者B/S的服务端,标记—清除算法。
G1收集器:一款面向服务端应用的垃圾收集器,并行与并发,分代收集,标记-整理算法。
串行收集器
并行收集器

问:类加载的五个过程
答:加载、验证、准备、解析、初始化使用和卸载了,通过全限定名来加载生成class对象,然后进行验证这个class文件,包括元数据验证,字节码校验等,初始化就是开始执行static代码块和给static初始化值。

问:双亲委派模型和加载器
答:Bootstrap ClassLoader:启动类加载器,Extension ClassLoader:扩展类加载器,ApplicationClassLoader:系统类加载器。

问:JVM性能调优有那些措施
答:设定堆最小内存大小,设定垃圾回收器年轻代用串行,年老代并行,响应优先选择GMS,吞吐量高选择G1。

问:介绍下JVM中的锁
答:无锁,偏向锁,轻量级锁,重量级锁。

问:引用有那些
答:强引用:new出的对象之类的引用,只要强引用还在,永远不会回收。软引用:引用但非必须的对象,内存溢出异常之前回收。弱引用:非必须的对象,对象能生存到下一次垃圾收集发生之前。虚引用:对生存时间无影响,在垃圾回收时得到通知

问:volatile
答:保证此变量对所有线程的可见性,禁止指令重排序优化,volatile修饰的变量不一定是线程安全的,a++。

你可能感兴趣的:(Java面试题分享-JVM)