1. 首页
  2. 编程语言
  3. Java
  4. Java中对象都是分配在堆上吗?你错了!

Java中对象都是分配在堆上吗?你错了!

上传者: 2021-12-24 19:40:30上传 PDF文件 141.98 KB 热度 25次

本文首先对这两者进行介绍,而后对Java对象分配过程进行介绍。Java在Java SE 6u23以及以后的版本中支持并默认开启了逃逸分析的选项。Java Hotspot编译器使用的是Jong-Deok Choi, Manish Gupta, Mauricio Seffano,Vugranam C. Sreedhar, Sam Midkiff等在论文《Escape Analysis for Java》中描述的算法进行逃逸分析的。但当真实的 Java 程序运行时,这样的假设并不成立。经过逃逸分析之后,可以得到三种对象的逃逸状态。线程同步的代价是相当高的,同步的后果是降低并发性和性能。JVM在内存新生代Eden Space中开辟了一小块线程私有的区域,称作TLAB。默认设定为占用Eden Space的1%。编译器通过逃逸分析,确定对象是在栈上分配还是在堆上分配。

下载地址
用户评论