JVM学习笔记

岁酱吖の 提交于 2020-03-07 04:57:10

JAVA内存模型

Java虚拟机由类加载系统、运行时数据区(堆,栈,本地方法栈,方法区,程序计数器)、字节码执行引擎组成。
堆:用于存程序中创建的对象。
栈(FILO):局部变量的存放地址。
本地方法栈:本地方法(native修饰的方法,如:Thread类中的start方法)的内存区域。
方法区:用于存放类信息、静态变量、静态常量。
程序技数器:用于记录CPU切换后程序的执行位置。
在这里插入图片描述

垃圾回收(可达性分析算法)

就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。
可以作为GC Root 引用点的是:

  1. JavaStack中的引用的对象。
  2. 方法区中静态引用指向的对象。
  3. 方法区中常量引用指向的对象。
  4. Native方法中JNI引用的对象。

JVM调优

JVM调优的重点就是要减少FullGC 因为FullGcC会产生STW(stop the world)停止正在运行的线程去回收整个内存区域,会导致应用卡顿。
调优:对于频繁产生垃圾对象的系统,应该估算出产生垃圾对象的所占空间的大小,尽量配置更多的新生代内存。
在这里插入图片描述在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!