当前位置: 首页 > 知识库问答 >
问题:

为什么JVM内存参数通常是256的倍数?

蔡鹏程
2023-03-14

我见过几乎所有的JVM内存参数通常都是256的倍数或一个圆形的二进制值 - 例如256m,512m,1024m等。我知道,它可能与物理内存(RAM)通常是二进制数(例如256 MB,1 GB等)有关。

我的问题是,如果将JVM内存设置为256的倍数或任何二进制值,这真的有助于内存管理吗?让JVM内存保持一个十进制的整数,比如1000m,而不是1024m,这有什么坏处吗——尽管我从未见过任何JVM使用这样一个被认为是十进制的< code>round值。

操作系统会在启动时将上述内存分配给JVM,所以我想,对于JVM来说,它是否可以有效地管理圆形十进制内存大小(例如1000 MB)还是存在任何缺点更是一个问题。

编辑:我知道,我们可以对JVM内存使用十进制值,但我的问题是我们应该使用十进制值吗?

EDIT2:有关JVM在处理每个内存大小方面同样有效的意见/猜测,请分享您用于得出该结论的任何相关链接。我在其他开发人员中已经看到了足够多关于这个主题的WAR,但我还没有看到太多具体的推理来支持其中任何一个——十进制或二进制值。

共有3个答案

韦睿
2023-03-14

没有真正的要求这些值是2的乘数。这只是一种使用方式。你可以在那里使用任何值。

-Xms1303m -Xmx2303m -XX:MaxPermSize=256m // my configs
赏新知
2023-03-14

没关系。对舍入值没有特殊处理。

您可以在1字节的精度范围内指定内存大小-JVM本身会将大小四舍五入到它可以接受的值。E、 g.堆大小四舍五入到2MB边界。看看我的另一个答案:https://stackoverflow.com/a/24228242/3448419

詹正浩
2023-03-14

没有必要对 JVM 内存参数使用 2 的倍数。如果旧的内存分配不够,则将值加倍是常见的用法。

如果以 1MB 的步骤增加分配的内存值,则必须在配置符合您的要求之前调整该值数 (一百) 次。因此,将旧值加倍会更舒适。

这依赖于这样一个事实,即在那些日子里,内存是一种廉价的资源。

编辑:

如前所述,可以分配1000 MB或381 MB之类的值。JVM可以处理每个足够大的内存大小来托管permGenSpace,堆栈和堆。

 类似资料:
  • 本文向大家介绍请问什么是JVM内存模型?相关面试题,主要包含被问及请问什么是JVM内存模型?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JVM内存模型 Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(l

  • 问题内容: 在64位系统上,Python中的整数占用24个字节。这是C语言中64位整数所需内存的3倍。现在,我知道这是因为Python整数是对象。但是,额外的内存又有什么用呢?我有我的猜测,但肯定会很高兴。 问题答案: 请记住,Python类型没有C那样有限的范围。唯一的限制是可用内存。 内存用于存储值,整数存储的当前大小(存储大小可变以支持任意大小)以及标准的Python对象簿记(对相关对象的引

  • 我意识到使用别人的密码总是一种信念的飞跃,除非你有资格自己审查它,而且“可信”没有普遍的定义,但这似乎是一件足够普遍和重要的事情,应该在使用什么上有某种共识。我只是天真吗? 编辑,因为它在评论中出现了很多:是的,我们再次在服务器端做了一个更严格的哈希。客户端散列不是我们保存在数据库中的最终结果。客户端散列是因为人类客户端请求它。他们没有给出具体的原因,可能他们只是喜欢过度杀戮。

  • 我正在寻找一种策略来调整我正在运行的应用程序的JVM参数。 该应用程序本身是一个网络应用程序,大多数时候不做太多事情,也不需要太多内存。假设300MB。时不时地,外部的一些东西会触发大量的繁重处理,偶尔需要更多内存。假设1400 MB。 我在JDK 15上运行,没有任何其他JVM参数在kubernetes集群中的pod上。 我想: 确保我的应用程序持续运行 确保我的应用程序从底层系统占用的内存不会

  • 考虑以下测试程序: libstdc和libc的输出分别为: 如您所见,占用的内存是一个简单程序的3倍。导致这种内存差异的实现有何不同?我需要担心吗?我如何解决它?

  • JVM选项: 正如预期的那样,JVM将为JVM堆分配将近20MB的内存。 但请参阅以下 GC 详细信息: PSYoungGen总计9216K,已用4612k[0x 00000000 ff 6000000,0x 0000000010000000100000000]< br > Eden空间8192K,56%已用[0x 000000000 ff 600000,0x 0000000 FFA 812d 8