首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JVM优化Java代码时都做了什么?

JVM优化Java代码时都做了什么?

作者头像
葆宁
发布2019-04-18 15:17:35
发布2019-04-18 15:17:35
6730
举报
文章被收录于专栏:FREE SOLOFREE SOLO

JVM优化Java代码时都做了什么?

JVM在对代码执行的优化可分为运行时化和即时编译器优化。运行时优化主要是解析执行和动态编译通用的一些机制,比如说锁机制(如偏向锁)、内存分配机制(如TLAB)。除此之外,还有一些专门优化器执行效率的,比如说模板解析器,内联缓存。 JVM的即时编译器优化是指将热点代码以方法为单位转换成机器码,直接运行在底层硬件之上。它采用了多种优化方式,包括静态编译器可以使用的如方法内联、逃逸分析,也包括基于程序运行profle的投机性优化,这个怎么理解了?比如我有一条instanceof指令,在编译之前的运行过程中,测试对像的类一直是同一个,那么即时编译器可以假设编译之后的执行过程中还会是这一个类,并且根据这个类直接返回instanceof的结果。如果出现了其他类,那么就抛弃这段编译后的机器码,并且切换回解析执行。

JVM性能调优有很多设置,这个参考JVM参数即可.

主要调优的目的:

代码语言:javascript
复制
1.控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为。

2.控制JVM堆栈大小.一般来说,JVM在内存分配上不需要你修改,(举例)但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小.同时,还要需要控制总的JVM大小避免内存溢出。

3.控制JVM线程的内存分配.如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的,需要通过一定时间的观测后,配置最优结果。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月13日,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • JVM优化Java代码时都做了什么?
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档