是的,如果没有开启标量替换,即使开启了逃逸分析,对象的数据仍然会被分配在堆中。逃逸分析只是尽可能地将对象的引用分配在栈帧中,以减少堆的使用,但对象的数据仍然需要在堆中分配空间。只有开启了标量替换,对象的数据才能被拆分成基本类型数据,分配在栈帧中,从而完全避免了在堆中分配对象。
jvm调优:开启了逃逸分析,但是没开启标量替换,数据是不是就在堆中了?
最新推荐文章于 2024-08-02 18:52:04 发布
是的,如果没有开启标量替换,即使开启了逃逸分析,对象的数据仍然会被分配在堆中。逃逸分析只是尽可能地将对象的引用分配在栈帧中,以减少堆的使用,但对象的数据仍然需要在堆中分配空间。只有开启了标量替换,对象的数据才能被拆分成基本类型数据,分配在栈帧中,从而完全避免了在堆中分配对象。