1.jvm
java跨平台:jvm从软件层面屏蔽不同操作系统在底层硬件与指令上的区别。
java文件-》.class文件(放在方法区中)-》类装载子系统-》字节码执行引擎
只要有main方法运行,jvm会为每个方法线程分配单独空间栈存放局部变量表,操作数栈,动态链接,方法出口,各线程栈先进入的后执行
javap -c 对字节码文件 可读性
程序计数器:记录当前线程执行位置,字节码执行引擎实时修改,当线程中断时能够保存当前线程执行位置,方便线程恢复后继续从记录位置执行
操作数栈:操作数做加减乘除运算的临时内存空间
动态链接:将符号引动转为直接引用(方法名找到方法代码具体的位置)
方法出口:知道返回到main方法哪行代码继续执行
栈中存放基本数据类型值或堆中对象引用地址
方法区存放类信息,常量池,静态变量
2.堆
年轻代8:1:1(Eden区 Survivor :s0,s1)1:2 老年区
gc root:局部变量,静态变量出发找引用,链条上为非垃圾对象,把存货对象放入存活区15代后放入老年区