Java(栈和堆)——在这个简单的例子中内存发生了什么

标签 java memory heap-memory stack-memory

任何人都可以解释一下这个例子中内存方面发生了什么(堆栈和堆)?如果我理解正确的话,java将对象存储在堆上,所以i1将在堆上......与字符串相同?但是 i2 呢,考虑到它是一个类字段声明。

public ExampleClass {
   Integer i1=new Integer(1);
   int i2 = 2;
   String str = "abc";
}

最佳答案

所有这些都存储在堆中。

正如 SO 标签所说:

The heap is process memory set aside for dynamic allocation.

因此任何变量都将放置在堆上。

但是,任何基本类型(intfloat 等)都将存储在堆栈中**仅当它们在方法内本地分配时)。

here了解更多信息。

关于Java(栈和堆)——在这个简单的例子中内存发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8436179/

相关文章:

java - 内存不足错误: PermGen space when starting an embedded Tomcat

java - 无法将第二个 SQLite 数据库列放入 TextView

c - C中的字符串溢出检测

node.js - 什么是 node.js 内存故障?

algorithm - 如何在 Photoshop 等专业绘图应用程序中存储用于撤消重做的 Action ?

java - 多线程应用程序 - 帮助一些伪代码!

java - Apache CXF Java 客户端的安全策略

c - Malloc 改变 C 中的值

c# - 减少 .NET 应用程序的内存使用?

读取字节数组中的文件时出现 Java 堆空间错误