记录java jvm学习笔记(附带面试题)

一 字节码:
Java bytecode 由单字节(byte)的指令组成,理论上最多支持 256 个操作码(opcode)。
实际上 Java 只使用了200左右的操作码, 还有一些操作码则保留给调试操作。
根据指令的性质,主要分为四个大类:

  1. 栈操作指令,包括与局部变量交互的指令
  2. 程序流程控制指令
  3. 对象操作指令,包括方法调用指令
  4. 算术运算以及类型转换指令

二 类加载器

  1. 加载(Loading):找 Class 文件

  2. 验证(Verification):验证格式、依赖

  3. 准备(Preparation):静态字段、方法表

  4. 解析(Resolution):符号解析为引用

  5. 初始化(Initialization):构造器、静态变
    量赋值、静态代码块

  6. 使用(Using)

  7. 卸载(Unloading)

  8. 在这里插入图片描述
    三类加载器:

  9. 启动类加载器(BootstrapClassLoader)

  10. 扩展类加载器(ExtClassLoader)

  11. 应用类加载器(AppClassLoader)
    加载器特点:
    双亲委托 负责依赖 缓存加载
    三 JVM 内存结构
    在这里插入图片描述
    面试题:

  12. 什么是JVM?
    1.1 请问JDK与JVM有什么区别?
    1.2 你认识哪些JVM厂商?
    1.3 OracleJDK与OpenJDK有什么区别?
    1.4 开发中使用哪个版本的JDK?生产环境呢? 为什么这么选?

  13. 什么是Java字节码?
    2.1 字节码文件中包含哪些内容?
    2.2 什么是常量?
    2.3 你怎么理解常量池?

  14. JVM的运行时数据区有哪些?
    3.1 什么是堆内存?
    3.2 堆内存包括哪些部分?
    3.3 什么是非堆内存?

  15. 什么是内存溢出?
    4.1 什么是内存泄漏?
    4.2 两者有什么关系?

  16. 给定一个具体的类,请分析对象的内存占用
    5.1 怎么计算出来的?
    5.2 对象头中包含哪些部分?

  17. 常用的JVM启动参数有哪些?
    6.1 设置堆内存XMX应该考虑哪些因素?
    6.2 假设物理内存是8G,设置多大堆内存比较合适?
    6.3 ­Xmx 设置的值与JVM进程所占用的内存有什么关系?
    6.4 怎样开启GC日志?
    6.5 请指定使用G1垃圾收集器来启动Hello程序

  18. Java8默认使用的垃圾收集器是什么?
    7.1 Java11的默认垃圾收集器是什么?
    7.2 常见的垃圾收集器有哪些?
    7.3 什么是串行垃圾收集?
    7.4 什么是并行垃圾收集?
    7.5 什么是并发垃圾收集器?
    7.6 什么是增量式垃圾收集?
    7.7 什么是年轻代?
    7.8 什么是GC停顿(GC pause)?
    7.9 GC停顿与STW停顿有什么区别?

  19. 如果CPU使用率突然飙升,你会怎么排查?
    8.1 如果系统响应变慢,你会怎么排查?
    8.2 系统性能一般怎么衡量?

  20. 使用过哪些JVM相关的工具?
    9.1 查看JVM进程号的命令是什么?
    9.2 怎么查看剩余内存?
    9.3 查看线程栈的工具是什么?
    9.4 用什么工具来获取堆内存转储?
    9.5 内存Dump时有哪些注意事项?
    9.6 使用JMAP转储堆内存大致的参数怎么处理?
    9.7 为什么转储文件以 .hprof 结尾?
    9.8 内存Dump完成之后,用什么工具来分析?
    9.9 如果忘记了使用什么参数你一般怎么处理?

  21. 开发性问题:你碰到过哪些JVM问题?

书籍推荐:

《深入理解Java虚拟机:JVM高级特性与最佳实践》周志明

《自己动手写Java虚拟机》

《实战Java虚拟机:JVM故障诊断与性能优化》

《揭秘Java虚拟机 JVM设计原理与实现》

回复 书名即可获得
公众号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值