JDK体系和JVM

  1. JDK包含开发工具和运行环境,JRE为运行环境

  2. JVM

  • 类装载系统

  • 运行时数据区
    堆:对象实例 线程共享

    1/3(8Eden => 1Survivor S0from- 1Survivor S1to年轻代) =>2/3老年代
    Eden 满了执行 minor gc(gc root可达性分析算法找到存在引用对象复制到Survivor(两个区域轮换存放)且对象分代年龄+1,垃圾对象执行GC删除),1当触发gc时分代年龄达到15时,会将对象移动到老年代,老年代2/3 FULLGC,FULLGC触发会执行STW(stop the world,让其他线程停止,资源去处理GC,防止收集过程标记清除等复杂场景出现),2当一批对象大小超过survivor区域50%时,直接放到老年代

    栈(线程):为方法提供内存空间,存放局部变量表(对象为内存地址),操作数栈(操作的执行与临时存储操作相关数据),动态链接,方法出口(方法执行完的上层方法线程位置记录)线程独享

    可查看java字节码文件观察存储流程,javap -c XXX.class > XX.txt

    本地方法栈:执行native方法所需分配的内存位置 线程独享
    方法区:存放常量,静态变量,类信息 1.8之后叫元空间,之前叫持久代 线程共享
    程序计数器:各线程执行到代码的位置(时间片切换,断点执行,由字节码执行引擎动态修改)

  • 字节码执行引擎

  1. 调优工具
    调优目的:减少GC次数,减少GC过程STW时间,STW会影响用户体验
    对象估算: 所有成员变量字节量和
    xms xmx
    xmn 年轻代大小
    jvisualvm
    jprofiler

关系图

你可能感兴趣的:(JDK体系和JVM)