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