java虚拟机
2019-11-27 10:09:39 0 举报
AI智能生成
java虚拟机介绍
作者其他创作
大纲/内容
java虚拟机数据类型
byte
short
int
long
float
double
char
Object
垃圾收集算法
标记-清除
复制算法
标记-整理
分代收集<br>
新生代<br>
每次垃圾收集时都发现有大批对象死去,只有少量存活,那就选择复制算法,只需要付出少量存活对象的复制成本就可以完成收集<br>
老年代
在老年代中因为对象存活率高、没有额外空间对它进行分配担保,就必须使用标记-清理或者标记-整理来进行回收<br>
内存分配和回收策略<br>
对象优先在Eden分配<br>
大对象直接进入老年代<br>
长期存活的对象将进入老年代<br>
性能监控和故障处理<br>
jdk的命令行工具
jps
jstat
jinfo
jmap
jhat
jstack
jdk可视化工具
jconsole
visualvm
虚拟机类加载机制<br>
类加载过程
加载
加载时虚拟机完成3件事<br>
通过一个类的全限定名来获取定义此类的二进制自己流<br>
将 这个字节流所代表的静态存储结构转化为方法区 的运行时数据结构<br>
在内存中生成一个代表这个 类的 java.lang.Class对象,作为方法区这个类的各种数据 访问入口<br>
二进制流的获取
从ZIP包中读取
从网络中读取
运行时计算生成,这种场景使用得最多就是动态代理技术,在 <font color="#662c90"><b>java.lang.reflect,Porxy</b></font>中,即使使用<font color="#c41230"><b>ProxyGenerateProxyClass</b></font>来为特定接口生成形式为"<font color="#f15a23"><b>*$Proxy</b></font>"的代理类的二进制字节流。<br>
由其他文件生成,典型场景是<font color="#f1753f"><b>JSP</b></font>应用,即由JSP文件生成对应的Class类
验证
准备<br>
解析
初始化
使用<br>
卸载<br>
类加载器
双亲委派模型
启动类加载器
扩展类加载器<br>
应用程序类加载器
双亲委派的工作过程<br>
破坏双亲 委派<br>
线程上下文类加载器<br>
详细描述<br>
虚拟机字节码执行引擎
运行时栈帧结构
局部变量表
操作数栈
动态连接
方法返回地址
附加信息<br>
方法调用
解析
分派
动态类型语言支持
基于栈的字节码解释执行引擎
字节码生成与动态代理
字节码类库
javassist
CGLib
ASM
动态代理<br>
Proxy
InvocationHandler
ProxyGenerator.generateProxyClass()
0 条评论
下一页