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

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

目的是使Java程序 为任何事情 。

假设这台计算机具有:

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

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

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

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

谢谢,盖伦

回答:

单个实例可以尝试访问所有内存,但是NUMA区域意味着GC之类的东西在访问另一个区域中的内存时表现很差。它变得越来越快,并且JVM支持NUMA,但如果要扩展性就需要改进。即使这样,您也可以获得256

MB的堆空间并使用700个本机/直接内存,而不会出现此问题。;)

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

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

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

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

以上是 JVM内存和CPU使用率的实际限制? 的全部内容, 来源链接: utcz.com/qa/424348.html

回到顶部