专栏名称: java一日一条
主要是讲解编程语言java,并且每天都推送一条关于java编程语言的信息
目录
相关文章推荐
51好读  ›  专栏  ›  java一日一条

面试官:是不是所有的对象和数组都会在堆内存分配空间

java一日一条  · 公众号  · Java  · 2019-08-13 19:02

正文

请到「今天看啥」查看全文




jvm在编译阶段引入了 JIT(即时编译) 技术,而随着这种技术的成熟, 栈上分配、标量替换优化技术也产生了一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。


为了方便大家理解逃逸分析,给大家献上两段网上找的代码


大家可以观察,在第一段代码中StringBuffer对象被该方法之外的给利用了,也就是该对象逃逸出了该方法体。相反第二段代码就将对象的值转化为常量返回给了调用方,该对象就在内部被消化了,jvm的逃逸分析也针对的就是这种情况。


在Java代码运行时,通过JVM参数可指定是否开启逃逸分析,
-XX:+DoEscapeAnalysis :表示开启逃逸分析
-XX:-DoEscapeAnalysis :






请到「今天看啥」查看全文