- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《JVM优化》.pdf
JVM优化
Contents
1 JVM介绍
2 JAVAC编译优化
3 JIT编译器优化
4 内存模型
5 GC策略
6 常见问题处理
执行过程
VM 的基本结构
• 一套运行时环境
–一个解释器
–一组GC
• 两个编译器
• Client编译器(C1)
• 轻量,只做少量性能开销比高的优化,占用内存比较
少,启动速度快
• Serer编译器(C2)
• 重量,大量应用系统编译优化,占用内存相对多
• 顶峰速度高
• 适用于服务器端应用
Javac工作流程
• 解析与输入到符合表
• 注解处理
• 分析与代码生成
属性标注与检查
数据流分析
泛型处理
解除语法糖
生成class文件
生成class文件
–将实例成员初始化收集到构造器中成为init()
–将静态成员初始化收集为clinit()
–从抽象语法树生成字节码
• 后序遍历语法树
• 进行最后的少量代码转换
–String的+被替换为stringbuilder操作
–Static final替换,etc
–从符号表生成class文件
• 生成class文件的结构信息
• 生成元数据
JAVAC编译优化
• 源代码
• 编译优化后
Class文件所记录的信息
• 结构信息
• Class文件格式版本号
• 各部分的数量与大小
• 元数据
• 类/继承的超类/实现的接口的声明信息
• 域与方法申明信息
• 常量池
• 用户自定义的,RetentionPolicy为class或RUNTIME的注解
• 源代码中的常量信息
• 方法信息
Class 文件格式
对象占用大小评估
(“main”32位HotSpot)
JVM堆结构
JVM运行时数据区域
• 程序计数器
• 用来保存程序当前要执行的下一条指令
• JVM线程栈
• 存放了编译期可知的各种标量类型、对象引用、方法返回地
址等
• 本地方法栈
• 年轻代+年老代
• 永久代
• 存放了每个Class的结构信息,包括常量池、字段描述、方
法描述等
• 运行时常量(永久代的一部分)
• 存放编译期生成的各种字面量和符号引用
• 直接内存
• DirectByteBuffer避免了在Java 堆和Native 堆中来回复制
数据
GC方式
CMS
• CMS并非没有暂停,而是用两次短暂停来替代串行标记整理
算法的长暂停,它的收集周期是这样:
初始标记(CMS- initial-mark) - 并发标记(CMS-
concurrent-mark) - 重新标记(CMS-remark) - 并发清除
(CMS-concurrent-sweep) -并发重设状态等待下次CMS的触
发(CMS-concurrent-reset)。
其中的1,3两个步骤需要暂停所有的应用程序线程的。
第一次暂停从root对象开始标记存活的对象,这个阶段称为
初始标记;第二次暂停是在并发标记之后,暂停所有应用程
序线程,重新标记并发标记阶段遗漏的对象。
常见优化参数
GC
• 年轻代
–关注Minor gc频率
–使得新对象尽量在minor gc过程中死亡
•
您可能关注的文档
- 《Java面向对象程序设计[杨晓燕]第11章-图形界面》.ppt
- 《Java面向对象程序设计[杨晓燕]第12章-Java多线程》.ppt
- 《Java面向对象程序设计[杨晓燕]第2章 Java语言基础》.ppt
- 《Java面向对象程序设计[杨晓燕]第4章 Java流程控制结构》.ppt
- 《Java面向对象程序设计[杨晓燕]第5章 Java数组》.ppt
- 《Java面向对象程序设计[杨晓燕]第6-7章 Java类和对象》.ppt
- 《Java面向对象程序设计[杨晓燕]第8章 Java包和异常》.ppt
- 《Java面向对象程序设计[杨晓燕]第9章 面向对象基本原则和模式》.ppt
- 《Java面向对象程序设计_习题解答》.doc
- 《Java面向对象程序设计第10章_Java Swing图形用户界面》.ppt
文档评论(0)