JVM-java虚拟机

1. Java的内存模型以及GC算法

2. jvm性能调优都做了什么

3. 介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明

4. 介绍GC 和GC Root不正常引用。

5. 自己从classload 加载方式,加载机制说开去,从程序运行时数据区,讲到内存分配,讲到String常量池,讲到JVM垃圾回收机制,算法,hotspot。反正就是各种扩展

6. jvm 如何分配直接内存, new 对象如何不分配在堆而是栈上,常量池解析

7. 数组多大放在 JVM 老年代(不只是设置 PretenureSizeThreshold ,问通常多大,没做过一问便知)

8. 老年代中数组的访问方式

9. GC 算法,永久代对象如何 GC , GC 有环怎么处理

10. 谁会被 GC ,什么时候 GC

11. 如果想不被 GC 怎么办

12. 如果想在 GC 中生存 1 次怎么办

答:在对象的finalize方法中重新建立引用,但是有一此方法只会被调用一次,所以能在GC中生存一次。

13.JVM调优工具

  • Jconsole:用于堆JVM中的内存、线程和类等进行监控。
  • Jstatic:用于查看线程信息,例如查看死锁问题。
  • Jmap:查看堆内存使用情况,导出Java进程的内存快照文件,一般采用MAT工具分析文件

14.JVM中一次完整的GC流程是怎么样的,如何晋升到老年代?

  • 对象先存储在Eden区,当Eden区满了后,Java虚拟机会触发一次MinorGC,以收集新生代的垃圾,存活下来的对象,则会转移到Survivor区。
  • 大对象(需要大量连续内存空间的对象)直接进入老年代
  • 如果对象在Eden出生,并且经过第一次MinorGC后仍存活,并且被Survivor容纳的话,年龄设为1,每熬过一次MinorGC,年龄+1,年龄超过一定限制(默认15),则被晋升到老年态,即长期存活的对象进入到老年代。
  • 老年代满了后而无法容纳更多的对象,MinorGC之后通常会进行FullGC,FullGC清理整个内存堆,包括年轻代和年老代。
  • MajorGC发生在老年代的GC,清理老年代,经常会伴随至少一次MinjorGC,比MinorGC慢10倍以上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值