JVM 面试题汇总

JVM内存

1、JVM方法区存储内容 是否会动态扩展,是否会出现内存溢出,出现的原因有哪些?
2、JVM内存分为哪些区域?每个区域都存储哪些数据?一个对象从创建到销毁都是怎么在这些部分里存活和转移的?内存的哪些部分会参与GC的回收?
3、JVM内存分代,Java 8的内存分代改进

垃圾收集

1、常见的垃圾回收算法,Hotspot虚拟机中每种收集器使用的是哪些算法,各种算法的优缺点
2、列举jvm堆溢出和栈溢出的场景
3、JVM垃圾回收机制,何时触发MinorGC、FullGC
4、新生代和老生代的内存回收策略
5、什么时候一个对象会被GC?为什么要在这种时候对象才会被GC?GC策略都有哪些分类?这些策略分别都有什么优劣势?都适用于什么场景?举个实际的场景,让你选择一个GC策略?为什么要选择这个策略?
6、用什么方式可以查看是哪个类占用资源较多
7、JVM 参数都有哪些?GC日志参数、设置各区域大小的参数
8、常用垃圾收集器的优缺点,G1收集器
9、测试环境、生产环境都是怎么配置堆栈内部各分区大小的?为什么这么配置?
10、jvm调优有什么思路;
11、jvm中的栈区一般分配多大,为什么
12、Eden和Survivor的比例分配默认是多少
13、java8中jvm做了哪两个主要的调整
14、在tomcat中如何配置JVM各个区域的内存大小?
15、你有没有遇到过OutOfMemory问题?你是怎么来处理这个问题的?处理 过程中有哪些收获?
16、内存溢出和内存泄漏分别是什么?有什么区别?
17、内存溢出有哪些种类?分别是什么原因引起的?
18、怎样解决内存溢出问题(使用什么工具快速定位)
19、如何查看垃圾回收日志
20、当一个Java程序响应很慢时如何查找问题、
21、当一个Java程序频繁FullGC时如何解决问题、
22、当一个Java应用发生OutOfMemory时该如何解决、
23、如何判断是否出现死锁
24、如何判断是否存在内存泄露
25、CPU使用率高居不下/系统无响应或响应慢,该怎么解决(使用什么工具?)

类加载

1、Java类加载的顺序是什么,每个步骤都做了哪些工作
2、Java的类加载器都有哪些?每个类加载器都加载哪些类?这些类加载之间的父子关系是怎样的?双亲委派模型是什么?有什么好处?什么情况下会破坏双亲委派模型?
3、如何⾃定义⼀个类加载器?你使⽤过哪些或者你在什么场景下需要⼀个⾃定义的类加载器吗?自己的类加载器和Java自带的类加载器关系如何处理?
4、Classloader源码看过没?loadClass方法、findClass方法、findLoadedClass方法的作用。
5、编译与反编译:javac 、javap 、jad 、CRF的用法
6、JVM的编译优化、JIT即时编译器
7、oop-klass模型、对象头
8、Java.lang.NoSuchFieldError错误可能在什么阶段抛出

JVM内存模型

1、Java的内存模型是怎么设计的?为什么要这么设计?结合内存模型的设计谈谈volatile关键字的作用?
2、Java内存可见性
3、对Java内存模型的理解,以及其在并发中的应用
4、指令重排序,内存栅栏等
5、内存可见性、重排序、顺序一致性、volatile、锁、final


想了解更多,关注微信公众号:程序员开发者社区
www.benjming.com

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangxiaoming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值