当前位置: 首页 > 面试题库 >

JVM内存和CPU使用率的实际限制?

施博文
2023-03-14
问题内容

可以说,钱不是限制因素,我想编写一个在一台功能强大的计算机上运行的Java程序。

目的是使Java程序 尽可能快地运行,而不必 为任何事情 交换或进入磁盘

假设这台计算机具有:

  • 1 TB RAM(64个16GB DIMM)
  • 64个处理器核心(8个8核处理器)
  • 运行64位Ubuntu

运行在JVM中的Java程序的单个实例能否利用这么多的RAM和处理器?

是否有任何实际的考虑因素可能会限制使用和效率?

  • 操作系统进程(内存和线程)限制?
  • JVM内存/堆限制?
  • JVM线程限制?

谢谢,盖伦


问题答案:

单个实例可以尝试访问所有内存,但是NUMA区域意味着html" target="_blank">GC之类的东西在访问另一个区域中的内存时表现很差。它变得越来越快,并且JVM支持NUMA,但如果要扩展性就需要改进。即使这样,您也可以获得256
MB的堆空间并使用700个本机/直接内存,而不会出现此问题。;)

如果您有大量的内存,最大的限制是数组,集合和ByteBuffer(用于内存映射文件)的大小均限制为20亿个。(2 ^ 31-1)

您可以使用自定义集合解决这些问题,但是Java确实应该支持IMHO。

顺便说一句:您可以以4万英镑的价格用Ubuntu购买具有1 TB内存和24核/ 48线程的Dell R910。

顺便说一句:我只具有最大40 GB的JVM经验。



 类似资料:
  • 问题内容: 说“用cpu = 800和内存= 1024运行myApp.jar” 我从事Java编程已经很多年了,问这个问题很尴尬。我什至不知道这是否可能。如果是这样,怎么办? 我只想知道是否可以设置Java程序的最大内存和cpu使用率。我突然想到了这个,因为我最近开始开发移动应用程序。我想知道该应用程序在内存和处理器非常有限的设备上的表现。 我看到带有演示应用程序的物理引擎可以在浏览器上运行,也可

  • 问题 你想对在Unix系统上面运行的程序设置内存或CPU的使用限制。 解决方案 resource 模块能同时执行这两个任务。例如,要限制CPU时间,可以像下面这样做: import signal import resource import os def time_exceeded(signo, frame): print("Time's up!") raise SystemEx

  • 然而看起来chrome headless消耗了太多的内存和cpu,有人知道我们如何限制chrome headless的cpu/内存使用吗?或者有什么变通办法。 提前道谢。

  • 我正在我的a集群(10个节点)中运行几个kubernetes pod。每个pod只包含一个托管一个工作进程的容器。我已指定容器的CPU“限制”和“请求”。以下是在节点(crypt12)上运行的一个pod的描述。 以下是我运行“kubectl可描述节点crypt12”时的输出 更新:我在github问题讨论中找到了问题的答案:“kubectl描述节点”中的cpu百分比是“cpu限制/#个内核”。由于

  • 问题内容: 我想获取Linux上单个进程的CPU和内存使用情况-我知道PID。希望我可以每秒获取一次,并使用“ watch”命令将其写入CSV。我可以使用什么命令从Linux命令行获取此信息? 问题答案: (您可以省略“ cmd”,但这可能有助于调试)。 请注意,这给出了该进程在运行期间的平均CPU使用率。

  • 问题内容: 我有点担心可以在共享计算机上使用的资源量。有什么方法可以测试管理员对我可以使用的资源量是否有限制?如果可以的话,为了提出更完整的问题,我该如何设置这种限制? 谢谢。 问题答案: 对于与流程相关的限制,您可以浏览一下(阅读文件中的注释,使用google或使用以获得更多信息)。而且正如jpalecek指出的那样,您可以用来查看(并可能修改)所有当前有效的限制。 您可以使用该命令查看磁盘配额