zoukankan      html  css  js  c++  java
  • JVM运行模式和逃逸分析

    JVM三种运行模式:

      解释模式(Interpreted Mode):只使用解释器(-Xint强制JVM使用解释模式),执行一行JVM字节码就编译一行为机器码。(可以马上看到效果,但是运行过程比较慢)

      编译模式(Compiled Mode):只使用编译器(-Xcomp强制JVM使用编译模式),先将所有JVM字节码一次性编译为机器码,然后一次性执行所有机器码。(启动时间比较长,但是运行过程快)

      混合模式(Mixed Mode):依然使用解释模式执行代码,但是对于一些“热点”代码采用编译模式,JVM一般采用混合模式执行代码。

    逃逸分析:

      就是分析对象动态作用域,当一个对象在一个方法中被定义后,它可能被外部的方法所引用,如作为参数传递到其他地方中。

    (jdk7后默认开启逃逸分析,开启:-XX:+DoEscapeAnalysis 关闭:-XX:-DoEscapeAnalysis)

    我们知道new出来的对象都是放在堆中的,其实有特殊情况:

     public User test1(){
            User user  = new User();
            user.setId(1);
            user.setName("cjc");
            return user;
        }

    上面代码User对象逃逸出了本方法

    public void test2(){
            User user = new User();
            user.setId(2);
            user.setName("cjc2");
        }

    上面代码User没有逃逸出本方法,也就是说它跟随方法的消亡而消亡。

    那么,一个聪明的jvm就会将逃逸出本方法的对象放在堆中,而没有逃逸出本方法的对象存在当前栈帧中,随着方法的结束而被消灭。就减少了堆内存的占用,就减少发生gc的次数。

    学习没有一蹴而就,放下急躁,一步一步扎实前进
  • 相关阅读:
    将一个数组分割为固定大小为三的的数组的数组
    计算两个日期间的天数
    手机号码影藏中间四位
    (反射)获取类的Class文件的三种方式
    Java程序员必背单词
    文本处理(CSS,JS)
    java学习路线
    onLoad onShow
    过滤HTML标签
    uni-app手机横屏后界面错乱解决办法
  • 原文地址:https://www.cnblogs.com/jpxjx/p/12540575.html
Copyright © 2011-2022 走看看