java虚拟机

1.java编译到class过程:

1.词法分析:将java源文件的字符流转化成token流
2.语法分析:将token流组建成结构化的语法树
3.语义分析:给类添加默认构造函数、检查变量在使用前是否初始化、将一些变量合并处理、检查变量类型是否匹配、消除无用的代码(解除java语法糖forEach->for,类型转换Integer->int,去掉永假的if代码块)
4.代码生成器:遍历语法树生成java字节码

java虚拟机_第1张图片
image.png

2.如何加载class文件:

1.找到class文件,并把这个class文件包含的字节码加载到内存中
2.分三个步骤,字节码验证、Class类数据结构分析及相应的内存分配和最后的符号表的链接
3.类中静态属性和初始化赋值默认值,以及静态块的执行等

3.jvm内存结构:

堆:
Young区(堆的1/4): eden(满minorGC) Suvivor Suvivor(minorGC,Young的1/8) 【from sppace,to space】
Old区:(FullGC)
Perm区:存放类的class对象

java虚拟机_第2张图片
堆的分代结构

垃圾收集算法:
1.引用计数
2.标记清除(内存碎片)
3.复制:Young代
4.标记-整理:Old代
5.分代收集


java虚拟机_第3张图片
java虚拟机内存结构

参数简介:
-Xmn: Young区大小
-XX:SurvivorRadio=8 :Young区和from space大小为8:1

你可能感兴趣的:(java虚拟机)