• JVM对象逃逸分析-JVM内存


    JVM的运行模式有三种:

    解释模式(Interpreted Mode):只使用解释器(-Xint  强制JVM使用解释模式),执行一行JVM字节码就编译一行为机器码 编译模式(Compiled Mode):只使用编译器(-Xcomp  JVM使用编译模式),先将所有JVM字节码一次编译为机器码,然 后一次性执行所有机器码
    混合模式(Mixed Mode):依然使用解释模式执行代码,但是对于一些 "热点" 代码采用编译模式执行,JVM一般采用混合模 式执行代码 解释模式启动快,对于只需要执行部分代码,并且大多数代码只会执行一次的情况比较适合;编译模式启动慢,但是后期执行速度快,而 且比较占用内存,因为机器码的数量至少是JVM字节码的十倍以上,这种模式适合代码可能会被反复执行的场景;混合模式是JVM默认采 用的执行代码方式,一开始还是解释执行,但是对于少部分 “热点 ”代码会采用编译模式执行,这些热点代码对应的机器码会被缓存起 来,下次再执行无需再编译,这就是我们常见的JIT(Just In Time Compiler)即时编译技术。 在即时编译过程中JVM可能会对我们的代码最一些优化,比如对象逃逸分析等
    对象逃逸分析:就是分析对象动态作用域,当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他地方 中。

     很显然test1方法中的user对象被返回了,这个对象的作用域范围不确定,test2方法中的user对象我们可以确定当方法结束这个对象就可 以认为是无效对象了,对于这样的对象我们其实可以将其分配的栈内存里,让其在方法结束时跟随栈内存一起被回收掉。 JVM对于这种情况可以通过开启逃逸分析参数(-XX:+DoEscapeAnalysis)来优化对象内存分配位置,JDK7之后默认开启逃逸分析,如果要 关闭使用参数(-XX:-DoEscapeAnalysis)

  • 相关阅读:
    H264--2--语法及结构
    LIB和DLL的区别与使用
    动态库与静态库优缺点比较
    网络摄像机连接图
    作为一名安防人,你真的了解网络摄像机吗?
    帧率、分辨率、码流的关系
    视频监控存储空间大小与传输带宽计算方法
    如何配置监控系统的电源功率?
    Websocket通信过程
    Python进阶点
  • 原文地址:https://www.cnblogs.com/scote/p/13994808.html
Copyright © 2020-2023  润新知