JVM学习笔记
JAVA内存模型
Java虚拟机由类加载系统、运行时数据区(堆,栈,本地方法栈,方法区,程序计数器)、字节码执行引擎组成。
堆:用于存程序中创建的对象。
栈(FILO):局部变量的存放地址。
本地方法栈:本地方法(native修饰的方法,如:Thread类中的start方法)的内存区域。
方法区:用于存放类信息、静态变量、静态常量。
程序技数器:用于记录CPU切换后程序的执行位置。
垃圾回收(可达性分析算法)
就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。
可以作为GC Root 引用点的是:
- JavaStack中的引用的对象。
- 方法区中静态引用指向的对象。
- 方法区中常量引用指向的对象。
- Native方法中JNI引用的对象。
JVM调优
JVM调优的重点就是要减少FullGC 因为FullGcC会产生STW(stop the world)停止正在运行的线程去回收整个内存区域,会导致应用卡顿。
调优:对于频繁产生垃圾对象的系统,应该估算出产生垃圾对象的所占空间的大小,尽量配置更多的新生代内存。
来源:CSDN
作者:没有后退可言
链接:https://blog.csdn.net/ddyyhh1234/article/details/104467980