java中可以有多个堆吗?

2024-02-04

java中可以有多个堆吗?如果可能的话,那么在什么情况下会发生呢?


已经存在多个内存区域,但只有一个 Java 堆。

通常有;

  • Java heap which might be broken into
    • 伊甸园空间,
    • 幸存者空间,
    • 任期空间。
  • 用于小型直接内存分配的本机内存堆。例如ByteBuffer.allocateDirect(4) See /proc/pid/maps 中缺少 [heap] 部分 https://stackoverflow.com/questions/17782536/missing-heap-section-in-proc-pid-maps进行有趣的讨论[heap]原生空间中的区域。
  • 用于大型直接分配的匿名内存映射。ByteBuffer.allocateDirect(10000000)
  • 线程的堆栈空间。即方法中的局部变量。
  • 用于代码的 Perm Gen 或 MetaSpace。字节码和 JIT 编译后的代码在哪里
  • 本机代码的共享库。这包括 DLL/SO 以及为什么“hello world”似乎使用如此多的内存。
  • 内存映射文件区域。例如文件通道.map(..)
  • 其他区域很少直接使用,例如VDSO。只能通过 JNI 或 Unsafe 访问。

当您说“堆”时,这是指第一个堆,您可以自然地在其上分配 Java 对象并由垃圾收集器管理的堆。实际上,还存在本机“堆”,但这不可互换并且具有非常不同的目的,事实上大多数 Java 开发人员永远不需要知道它的存在。

注意:这就是 JVM 在 Windows 和 Linux 上的实现方式,标准中没有任何内容表明 Java 必须存在这些才能工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中可以有多个堆吗? 的相关文章

随机推荐

  • 如何在Python中隐藏FFmpeg的控制台输出?

    我当时正在做一个YouTube 视频下载器Python 程序 我想将下载的数据编码为我使用的这项工作的其他媒体格式FFmpeg and FFmpeg Python 在 Python 中使用 FFmpeg 的包 一切都很好 但我想问我如何禁用
  • 非解引用迭代器是否超过了数组未定义行为的“最后一个”迭代器?

    Given int foo 0 1 2 3 我想知道指向 最后一个 的迭代器是否无效 例如 auto bar cend foo 1 在 Stack Overflow 问题中 有大量投诉和警告称这是 未定义的行为 如下所示 c 当迭代器结束时
  • 不同优化的无法解释的时间

    我正在编写一些代码 这些代码必须根据设置对大型数据集应用不同的算法 数据集很大 现实世界的时间表明我们需要在可能的情况下对其进行优化 所选算法必须在大型数组的许多数据子集上运行 因此 我决定尝试几种不同的方法 初始化一个Func lt gt
  • 将字符串输入随机化为所有可能性

    我需要帮助制作一个程序 该程序使用 args 获取字符串并将其随机化为每种可能性 然后 程序的结果将被保存到用户在执行程序时提供的文本文件中 如果你需要all以随机顺序排列可能的排列 那么我建议构建然后打乱列表 from itertools
  • 如何使用 XPATH 获取 XML 元素的相对深度

    我试图从给定 XML 文件中的特定元素查找给定 XML 元素的相对深度 我尝试使用 XPATH 但我对 XML 解析不太熟悉 并且没有得到所需的结果 我还需要在计数时忽略数据元素 下面是我编写的代码和示例 XML 文件 例如 的深度NM10
  • Maven 依赖项失败并出现 501 错误

    最近Maven构建正在运行的作业Jenkins失败并出现以下异常 表示他们无法从中提取依赖项梅文中心并且应该使用HTTPS 我不知道如何更改请求HTTP to HTTPS 有人可以在这件事上指导我吗 错误 无法解析的构建扩展 Plugin
  • 本地网络上的自托管 ServiceStack REST 服务

    我想知道是否有人可以提供帮助 我有一个本地网络 无线网络 我的计算机和连接到它的笔记本电脑 并且我尝试托管一个使用 ServiceStack 开发的休息服务 如果我在计算机上运行该应用程序 现在是控制台应用程序 并尝试使用计算机 IP 或
  • Swift:如何在每次出现表视图时重新加载新内容(例如数组)?

    我有一个带有两个视图的选项卡栏 tablview 视图控制器添加数据 然后我有一个数组 它将从视图控制器更新为新内容 例如 仅附加新字符串 该数组填充表视图 现在 当应用程序启动时 表视图显示所有数组内容 但是当我通过选项卡栏移动到视图控制
  • 在 Linux 上安装 antlr4 c++ 运行时后,一些包含文件被破坏

    我在linux上下载了antlr4工具并安装了c 运行时 usr local include 我创建了一个小语法文件 使用antlr4命令成功生成了解析器和词法分析器 但是在编译主文件时出现以下错误 我改变了Interval h里面的标题
  • 我可以在模板绑定中传递变量吗?

    我知道这不是长期使用的好方法 但是为了进行故障排除 有什么方法可以在绑定模板时传递一个简单的字符串 然后将其作为模板中的变量访问 例如 如果这是我的绑定 这是tmplOne div span Fruit span span span div
  • 在画布上画“洞”

    我试图在自定义视图的 onDraw 方法中绘制这样的形状 不幸的是 我无法 剪切 画布上的透明圆圈 通过使用 Color Transparent 绘制圆圈 我应该首先在另一个位图中绘制形状 然后将其绘制在 onDraw 提供的画布上吗 或者
  • PySpark 数据帧聚合中包含 null 的计数

    我正在尝试使用 agg 和 count 来获取 DataFrame 的一些计数 from pyspark sql import Row functions as F row Row Cat Date df sc parallelize ro
  • 在 Ansible 中,如何将不同文件中的变量合并到一个数组中?

    在 Ansible 中 在一个角色中 我有这样的 vars 文件 vars app1 yml app2 yml 每个文件都包含特定于应用程序 网站的变量 如下所示 name app1 git repo https github com ph
  • 在 Yii2 中,类似于 YII_DEBUG 和 YII_ENV 的全局变量应该放在哪里

    我正在建立一个网站 该网站有一个名为 市场 的 子域 所以 URL 将为 Marketplace sample com 我正在使用 Yii2 高级应用程序 并将以下代码添加到位于 frontend web 的 index php 中 def
  • 如何在 C++ 中手动运行消息泵

    原问题 我们的应用程序使用 CSocket 它需要运行消息泵才能工作 目前 更改为另一个套接字实现是不切实际的 尽管这是我们希望在某个时刻结束的地方 该应用程序采用 Visual C 非托管 目前 我们使用 C NET 服务启动器来启动 C
  • 在 debian lenny 中安装 postgres 9.0 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 各位 我的系统有以下分布详细信息 lsb release a No LSB modules are available Distributor ID
  • 如何将 DataAdapter 与存储过程和参数一起使用

    我想使用 DataAdapter 填充 DataGridView 控件 但我不知道该怎么做 因为我正在使用带参数的存储过程 有人可以举个例子吗 我明白了 呵呵 protected DataTable RetrieveEmployeeSubI
  • 如何阻止滚动条移动我的页面?

    我通过将页面内容包装在包装器 div 中 然后将其放入样式表中 将页面内容居中 wrapper width 960px margin left auto margin right auto 问题是 每当内容增加并且出现垂直滚动条时 它就会取
  • 如何计算同一类的元素数量?

    我的页面中有一个主 div 其中包含特定的内容id 现在 该类中存在一些同一类的输入元素div 那么我如何计算这个类中这些元素的数量div using jQuery With jQuery您可以使用 main div specific cl
  • java中可以有多个堆吗?

    java中可以有多个堆吗 如果可能的话 那么在什么情况下会发生呢 已经存在多个内存区域 但只有一个 Java 堆 通常有 Java heap which might be broken into 伊甸园空间 幸存者空间 任期空间 用于小型直