gpt4 book ai didi

java - 什么是 native 内存或 c 堆

转载 作者:行者123 更新时间:2023-11-30 18:38:46 25 4
gpt4 key购买 nike

我尝试对此进行探索,但找不到包含基础知识的答案。

我想知道 JVM 或 java 程序消耗的内存类型,如堆内存、 native 内存等。

但是我也想知道这个 native 内存(也称为 C 堆)是什么。

我正在寻找包含非常基础知识的解释。

最佳答案

Java程序运行在Java运行时的虚拟化环境中。该运行时本身是一个 native 进程(就像任何其他进程一样)。因此, native 内存的限制是由硬件和进程运行的操作系统施加的。

所有现代操作系统都使用虚拟内存,其中每个正在运行的程序都分配有自己的虚拟地址空间,其大小由底层架构决定。对于 Intel x86-32 位架构,最大可用地址空间为 2^32 - 1,等于 4GB。即使进程有自己的虚拟空间,它也不能使用全部虚拟空间。该虚拟空间分为内核空间和用户空间。在 x86-32 上运行的 Windows 操作系统上,为用户空间保留 2GB,为内核空间保留 2GB;在 Linux 上,保留 3GB 到 1GB。

对于Java进程来说,用户空间在逻辑上可以分为堆内存*和 native 内存。堆内存的大小由“Xms,Xmx”决定。您没有任何选项可以管理 native 内存,因为这是由 JRE 为您完成的。在应用程序因 OutOfMemoryException 终止之前,不断检查 native 内存消耗并检测泄漏始终是最佳实践。 堆内存只是 JVM 管理的用户空间的一部分。

关于java - 什么是 native 内存或 c 堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com