Java 中的内存管理
Java 的内存分配分为两个主要部分:堆和非堆。堆是运行时数据区域,Java 虚拟机 (JVM) 从中为类实例和数组分配内存。非堆包括 JVM 内部处理和优化所需的内存。
堆内存
堆内存进一步分为三个池:Eden Space、Survivor Space 和 Tenured Generation( Old Gen)。
-
Eden Space: 内存最初分配给大多数对象来自 Eden Space 池。
-
Survivor Space: 在 Eden Space 垃圾回收中幸存下来的对象将被移至 Survivor Space。
-
Tenured Generation: 在 Survivor Space 中存在一段时间的对象会被移至 Tenured生成。
非堆内存
非堆内存包括两个主要池:永久生成和代码缓存。
-
永久Generation: 包含了JVM本身的所有反射数据,比如类、方法等对象。
-
代码缓存:包含用于编译和存储本机代码的内存。
监控内存使用情况
Java 监控和管理控制台 (JConsole) 提供图形用户界面来监视 Java 应用程序的各个方面,包括内存使用情况。 JConsole 显示上述堆池和非堆池的内存使用情况,方便开发者识别潜在的内存问题。
其他资源
- [Heap Memory in Java](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/fundamentals.html#memorymodel)
- [非堆内存Java](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/fundamentals.html#noheapmemory)
- [使用 JConsole](https://docs. oracle.com/javase/8/docs/technotes/tools/share/jconsole.html)
以上是Java 内存是如何构造和管理的?的详细内容。更多信息请关注PHP中文网其他相关文章!