Java虚拟机总结

Java虚拟机JVM

1、Java代码执行机制

1)编译 

.java → 分析和输入到符号集 Parse and Enter → 注解处理 Annotation Procession → 语义分析和生成class文件Analyse and Generate → .class

Parse :词法分析、语法分析

Annotation Procession:处理自定义annotation

2)装载class

ClassLoader:Booksrap Class Loader、Extension Class Loader、System Class Loader、User-Defined Class Loader

类的加载、初始化、实例化过程

3)执行class

① 字节码解释执行(效率较低):1.指令解释执行 2.栈顶缓存 3.部分栈帧共享

② 编译执行:两种模式(client compiler、server compiler)

client compiler:C1,轻量级,少量性能开销,占用内存较少,适合桌面交互式应用

server compiler:C2,重量级,大量优化,占用内存较高,适合服务器端应用

③ 反射执行

2、JVM内存管理

1)JVM内存空间

方法区:存放加载的类信息、类中静态变量、类中定义为final类型的常量、类中的Field信息、类中的方法信息

堆区:存储对象实例及数组值。堆是所有线程共享的,因此分配内存需要加锁,所以创建对象开销大

本地方法栈:用于支持native方法的执行

PC寄存器、JVM方法栈:每个线程均会创建

2)内存分配

堆上分配、TLAB分配、栈上分配

3)内存回收GC

① 收集器:引用计数器、跟踪计数器

引用计数器:对对象引用计数,但不适合关系复杂的语言(如Java),JDK也未采用这种方法

跟踪计数器:三种实现算法:复制Copying、标记-清除Mark-Sweep、标记-压缩Mark-Compact,JDK都采用此方式

② JDK中可用的GC

新生代可用GC(针对对象存活时间较短,大部分):1.串行Copying  2.并行回收Copying  3.并行Copying   Minor GC触发机制及日志格式  

旧生代可用GC(针对对象存活时间较长,小部分)::1.串行Mark-Sweep-Compact  2.并行Compaction  3.并发Mark-Sweep    Full GC触发机制及日志格式

③ 内存状况分析

jconsole(JDK5自带)、JVisualVM(JDK6后)、JStat(JDK自带)、JMap(JDK自带)、JHat(JDK6自带)

3、线程资源同步和交互机制

1)线程资源同步

2)线程交互机制

3)线程状态及分析方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值