Update 03-Objects-Everywhere.md (#373)

感觉这样更顺畅些
This commit is contained in:
Haseo Chen
2020-05-20 12:11:39 +08:00
committed by GitHub
parent 0a8907a9eb
commit 371063442e

View File

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