像 C、C++ 这样的编程语言不会将数组值存储在 Heap 中,而是将值保存在 STACK 中。但在 Java 中,为什么有必要将数组值保存在堆中?
最佳答案
在 Java 中,数组(就像所有其他对象一样)通过引用传递:当您将数组传递给方法时,它将获得指向内存中相同位置的引用,不会进行复制。这意味着数组需要在创建它的方法之后保持“Activity ”状态,因此不能存储在该方法的堆栈帧中。它需要由垃圾收集器管理,就像所有其他对象一样。
有一些研究正在使用“逃逸分析”来优化 JVM 内存分配:如果可以保证对象(例如数组)永远不会离开当前范围,则实际上可以在堆栈上分配它, 效率更高。
关于java - 为什么java中的数组值存储在堆中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907561/