JVM面试指南

  • 请你谈谈你对jvm的理解?java8虚拟机和之前的变化更新?
  • 什么是OOM,什么是栈溢出StackOverFlowError?怎么分析?
  • JVM的常用调优参数有哪些?
  • 内存快照怎么抓取,怎么分析Dump文件?
  • 谈谈JVM中,类加载器的认识?

JVM的位置   

JVM的体系结构  

类加载器

作用: 加载Class文件

 1). 虚拟机自带的加载器

 2). 启动类根加载器(boot)

 3). 扩展类加载器(ext)

 4). 应用程序加载器(app)

双亲委派机制

 

沙箱安全机制

 

Native

 

PC寄存器

 

方法区

 

 栈帧:

 栈满了: StackOverFlowError 

 !!!栈+堆+方法区: 交互关系

 

三种JVM

 

 OOM示例:

 

新生区,老年区,永久区

 堆对象生命周期传递示例:

 永久区


 

堆内存调优

  jvm内存模型:

 Jprofiler工具下载地址

配置启动vm参数关注OOM异常

生成操作异常记录文件

 点击文件,分析大文件对象,粗略定位可能位置:

 分析运行线程执行出现异常的代码位置:

 问题具体位置:

 示例2:

  调整启动vm参数后输出:

 

GC常用算法

  引用计数法:

 复制算法:

轻量级gc

1.Eden区轻量级gc后,对象放置到幸存To空区,幸存From区内容也会复制到To空区;

2.From区变成To区,To区变成From区

3.经过一次轻量级gc,Eden区跟幸存To区为空

重量级gc

1.15次gc后,还能存活的堆对象放置养老区,Eden区,幸存区数据清空

 标记清除算法:

 标记清除压缩算法:

总结

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值