File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ Java 语法允许我们使用带双引号的文本内容来初始化字符串。
49
49
50
50
1 . ** 寄存器** (Registers)最快的存储区域,位于 CPU 内部 [ ^ 2 ] 。然而,寄存器的数量十分有限,所以寄存器根据需求进行分配。我们对其没有直接的控制权,也无法在自己的程序里找到寄存器存在的踪迹(另一方面,C/C++ 允许开发者向编译器建议寄存器的分配)。
51
51
52
- 2 . ** 栈内存** (Stack)存在于常规内存 RAM(随机访问存储器,Random Access Memory)区域中,可通过栈指针获得处理器的直接支持。栈指针下移分配内存,上移释放内存,这是一种快速有效的内存分配方法,速度仅次于寄存器。 创建程序时,Java 系统必须准确地知道栈内保存的所有项的生命周期 。这种约束限制了程序的灵活性。因此,虽然在栈内存上存在一些 Java 数据,特别是对象引用, 但 Java 对象却是保存在堆内存的 。
52
+ 2 . ** 栈内存** (Stack)存在于常规内存 RAM(随机访问存储器,Random Access Memory)区域中,可通过栈指针获得处理器的直接支持。栈指针下移分配内存,上移释放内存。这是一种仅次于寄存器的非常快速有效的分配存储方式。 创建程序时,Java 系统必须知道栈内保存的所有项的生命周期 。这种约束限制了程序的灵活性。因此,虽然在栈内存上存在一些 Java 数据(如对象引用), 但 Java 对象本身的数据却是保存在堆内存的 。
53
53
54
54
3 . ** 堆内存** (Heap)这是一种通用的内存池(也在 RAM 区域),所有 Java 对象都存在于其中。与栈内存不同,编译器不需要知道对象必须在堆内存上停留多长时间。因此,用堆内存保存数据更具灵活性。创建一个对象时,只需用 ` new ` 命令实例化对象即可,当执行代码时,会自动在堆中进行内存分配。这种灵活性是有代价的:分配和清理堆内存要比栈内存需要更多的时间(如果可以用 Java 在栈内存上创建对象,就像在 C++ 中那样的话)。随着时间的推移,Java 的堆内存分配机制现在已经非常快,因此这不是一个值得关心的问题了。
55
55
You can’t perform that action at this time.
0 commit comments