提纲
• HotSpot
• ClassFile
• ClassLoader
• 内存模型、锁、同步
• JVM内存管理和垃圾收集
HotSpot介绍
• Java发展历程
1995年,Sun发布Java 1.0,承诺:
Write Once,Run Anywhere
HotSpot
• Oracle(SUN)的JVM实现
• 主要用C++实现
• 解析器和编译器混合执行模式
• 默认解析执行,对执行频率高(热点)
的代码做动态编译
• 2006年开源
• OpenJDK
OpenJDK
• Sun在2006年11月13日把HotSpot及编译器通过GPL协
议开源,称为OpenJDK
• 这是自由软件社区的重要里程碑
• 加入OpenJDK的厂商包括:Oracle、IBM、Apple、SAP
• 支持的操作系统包括:Windows、Linux、Solaris、
BSD、MacOS、Haiku。
• 支持的硬件体系架构包括:x86、adm64、sparc、
PowerPC、mips、IA64、ARM
HotSpot包括:
•一个ByteCode Interpreter
•两个 JIT Compiler:
•C1 (client编译器)
•轻量级
•编译时间更短 ,占用内存少,适合GUI
•C2 (server编译器)
•重量级
•执行效率更高,大量编译优化,适合服务器
HotSpot包括:
HotSpot三种执行模式
一些关于JIT的参数
Class文件格式
• Java编译执行流程
• ClassFile的格式介绍
• ClassFile中FieldInfo和MethodInfo介绍
• 类型描述Descriptor介绍
• ClassFile中的Attribute介绍
• JVM指令介绍
ClassLoader
• 各种ClassLoader介绍
• ClassLoader工作机制
• Thread.getContextClassLoader()
• Jar Hell问题以及解决办法