目录
概述
相关文章在此总结如下:
| 文章 | 地址 | 
|---|---|
| jvm类加载系统 | 地址 | 
| 双亲委派模型与打破双亲委派 | 地址 | 
| 运行时数据区 | 地址 | 
| 运行时数据区-字符串常量池、程序计数器、直接内存 | 地址 | 
| jvm中对象创建流程与内存分配 | 地址 | 
| jvm对象内存布局 | 地址 | 
| GC基本原理 | 地址 | 
jvm虚拟机三问
jvm是什么?
广义上指的是一种规范,狭义上是 jdk 中的 jvm 虚拟机(实际上是各厂商实现的虚拟机,如:Hotspot、zing、j9等)

java 和 jvm 的关系

由上图,JVM是宿主,java通过编译成 class文件格式在 jvm上运行。
为什么学jvm
- 为了面试
 - 研发中难点问题会与jvm有关系。如:线程死锁、内存溢出、项目性能优化等。
 - 想要深入java语言,必需要学习jvm
 
怎么学习
- jvm基础知识
 - 类加载系统
 - 运行时数据区
 - 一个对象的一生
 - GC收集器
 - 实战
 
为什么jvm调优?
- 调优的最终目的都是为了应用程序使用最小的硬件来承载更大的吞吐量。
 - 更少的内存、更低的延迟、更大的吞吐量、减少应用的GC暂停时间
 - GC暂停会在高并发场景下,P99百分位的响应时间会产生影响
 
什么时候jvm调优
- 系统吞吐量与响应性能不高或下降
 - Heap内存(老年代)持续上涨达到设置的最大内存值
 - Full GC 次数频繁
 - GC停顿时间过长(超过1s)
 - 应用出现OutOfMemory等内存异常
 - 应用中有使用本地缓存、且占用了大量的内存空间
 
调优调什么
- 内存分配
 - 垃圾回收器选配