java - 为什么java中的数组值存储在堆中?

标签 java arrays memory-management

像 C、C++ 这样的编程语言不会将数组值存储在 Heap 中,而是将值保存在 STACK 中。但在 Java 中,为什么有必要将数组值保存在堆中?

最佳答案

在 Java 中,数组(就像所有其他对象一样)通过引用传递:当您将数组传递给方法时,它将获得指向内存中相同位置的引用,不会进行复制。这意味着数组需要在创建它的方法之后保持“Activity ”状态,因此不能存储在该方法的堆栈帧中。它需要由垃圾收集器管理,就像所有其他对象一样。

有一些研究正在使用“逃逸分析”来优化 JVM 内存分配:如果可以保证对象(例如数组)永远不会离开当前范围,则实际上可以在堆栈上分配它, 效率更高。

关于java - 为什么java中的数组值存储在堆中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907561/

相关文章:

java - 如何标记数组中的重复项?

javascript - 将数据推送到具有对值的数组中

c - 查找特定颜色的第一次出现 - 奇怪的分配行为

objective-c - 内存管理 : NSString's stringWithCString:encoding:

c++ - 什么时候用指针调用C++类构造函数?

Java 线程创建开销

java - Callable 与 Runnable 中使用 "ExecutorCompletionService"的问题

java - Spring 启动 : Jersey ResourceConfig needs annotating?

java - 从 http GET 响应获取图像作为 base64 字符串

PHP 使用 array_keys( ) 获取嵌套数组中的键