写在前面
100个问题搞定大数据理论体系
1000个问题搞定大数据技术体系
目录结构
- Java代码为什么要在虚拟机中运行?
- Java代码如何在虚拟机中运行?
- JVM运行时数据区如何划分?
- 堆和栈有何区别?
- 运行时栈帧结构是怎样的?
- Java堆是如何划分的?
- JVM为什么采用面向操作数栈而不是寄存器的架构?
- 方法区,永久代,常量池,元空间有何关系?
- String.intern()是如何实现的?
- Java如何使用直接内存?
- new关键字在虚拟机中是怎样的一个过程?JVM构造对象的步骤都有哪些?
- 对象在堆内存中的存储布局是怎样的?
- 对象字段的虚共享问题是指什么?如何解决对象字段的虚共享问题?
- 怎样判断对象是否已死?
- Minor GC和Full GC有什么区别?
- 如何理解GC日志?
- Java四种引用之间的区别?
- 垃圾收集算法有哪些?
- 安全点和安全区域是什么意思?
- JVM中有哪些垃圾收集器?
- G1 GC是什么?
- GC如何调优?
- JVM性能监控与故障处理工具有哪些?
- Arthas是什么?怎么用?
- Java方法调用的过程是怎样的?
- Java虚拟机是如何识别目标方法的?
- 虚方法调用在Java虚拟机中的实现方式?
- invokedynamic是如何实现的?
- Java8的Lambda表达式是如何实现的?
- JVM是如何处理异常的?
- JVM是如何实现反射的?
- class类文件的结构是怎样的?
- Java中this和super的实现原理是什么?
- 类加载的时机是什么?
- 类加载的过程是怎样的?
- 数组类型如何完成类加载?
- 双亲委派模型是什么?
- 哪些情况下类加载不需要遵守双亲委派模型?
- 有哪些常见的字节码指令?
- JavaAgent是什么?
- Java语法糖有哪些?
- 即时编译是什么?分层编译是什么?
- JVM的profiling是什么?
- Java 中的编译器分为哪些类型?
- 即时编译器有哪些优化?
- JVM优化Java代码时都做了什么?
- 什么是方法内联?
- 在什么情况下方法调用会被内联?
- 即时编译器的去虚化是什么?
- HotSpot虚拟机中的intrinsic是指什么?
- Java中的Unsafe类是什么?
- 逃逸分析,栈上分配,标量替换,同步消除,锁消除指的什么?
- 即时编译器对于字段读取及存储指令的优化是什么?
- 在什么情况下循环代码会被优化?JVM 针对循环代码有哪些优化?
- 在什么情况下对象分配会被优化?JVM中所有的对象只在堆上分配吗?
- 即时编译器的向量化优化是什么?SIMD 到底是什么?
- JDK9 的字符串底层原理是什么?
- 注解处理器的实现原理是什么?Lombok 的实现原理是什么?
- final字段的实现原理?
- 什么是Java内存模型?
- 主内存和工作内存是什么?
- 什么是happens-before原则?
- Java虚拟机是怎么实现synchronized的?
- volatile 的实现原理是什么?
- JNI的实现原理是什么?
- 如何避免 JVM 内存泄漏?
参考文献
- 《深入理解Java虚拟机:JVM高级特性与最佳实践第3版》周志明著
- 极客时间专栏《深入拆解Java虚拟机》郑雨迪
- 极客时间专栏 《Java性能调优实战》 刘超
- 极客时间专栏 《Java核心技术面试精讲》 杨晓峰
- 《JVM G1源码分析和调优》彭成寒编著
- 《Java编程的逻辑》马俊昌著
- Java几种常量池区分(字符串常量池、class常量池和运行时常量池)
- 垃圾回收机制中,引用计数法是如何维护所有对象引用的?
- 可达性分析详解
- JVM ZGC介绍
- Java最前沿技术——ZGC ZGC介绍
- JVM之PC寄存器
- 最新阿里面试题:说一下JAVA中THIS和SUPER关键字的底层实现原理
- String的Intern方法详解
- 浅析java中的语法糖
- 不了解这12个语法糖,别说你会Java!
- Java中有哪些语法糖?
- ClickHouse官网
- On Java 8