public void test() {
\t\tUserInfo user = new UserInfo();
\t\tuser.id = 1;
\t\tuser.age = 18;
\t
经过标量替换:
public void test() {\t\tint id = 1;\t\tint age = 18;
\t
大概就是这么个意思 , 这样可以节省很多不必要的内存空间
参数:
-XX:+EliminateAllocations 开启标量替换(jdk1.8 默认开启)-XX:-EliminateAllocations 关闭就可以了
逃逸分析的缺陷逃逸分析在JDK1.6中不太成熟 , 主要是不能保证逃逸分析的性能收益必定高于它的消耗 。 如果要完全准确地判断一个对象是否会逃逸 , 需要进行一系列的复杂分析 , 但是这样会很消耗资源 , 如果分析完后没有什么收获 , 就相当于凭空浪费了很多资源 。 所以目前虚拟机采用的是不那么准确 , 但时间压力相对较小的算法来完成逃逸分析 。
除此以外还有一些其他的优化手段 , 只是方法内联和逃逸分析是比较出名而已 。
- 荣耀|于无声处惊雷,荣耀笔记本从底层再突破
- 荣耀|解读荣耀PC新战略:PC行业底层创新的时代来了
- MySQL|逆向思维:反方向销售,所有营销高手都懂的底层逻辑
- 算法|JVM有几种垃圾回收(GC)算法,你知道吗?
- 电池|这台iPhone仅换过电池?网友:屏幕一看就有问题,还改了底层数据!
- jvm|Java:了解JVM加载、JVM链接和JVM初始化
- 安卓|安卓13开发者版本曝光!OPPO Find N已适配,系统底层迎来大升级
- 详解裂变的底层逻辑,裂变模型与驱动力
- vivo|Java:了解JVM加载、JVM链接和JVM初始化
- jvm|JVM底层原理之JIT编译器如何通过方法内联优化代码