【问题标题】:what is native memory or c-heap [closed]什么是本机内存或 c 堆 [关闭]
【发布时间】:2015-12-16 12:07:13
【问题描述】:

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

我想知道 JVM 或 Java 程序(如堆内存、本机内存等)完成的内存消耗类型。

但我也想知道这个也被称为 C 堆的本机内存是什么。

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

【问题讨论】:

  • 我刚刚删除了我的答案并投票关闭这里。它要么用两句话回答,要么太多太宽泛了。甚至不清楚你到底在追求什么。

标签: java c memory jvm heap-memory


【解决方案1】:

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

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

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

【讨论】:

  • 我不想要内存是如何分配的细节,我想要的是本机内存
  • @HimJEL 然后相应地表达您的问题,而不是对有效答案投反对票。
  • 其实你是在求解释。
猜你喜欢
  • 1970-01-01
  • 2021-04-19
  • 2016-12-01
  • 1970-01-01
  • 2011-06-25
  • 2017-09-17
  • 1970-01-01
  • 2012-01-31
  • 2014-01-21
相关资源
最近更新 更多