可以说,金钱不是一个限制因素,我想编写一个在一台功能强大的计算机上运行的Java程序。
目的是使Java程序尽可能快地运行,而不必为任何事情交换或转到磁盘。
假设这台计算机具有:
运行在JVM中的Java程序的单个实例能否利用这么多的RAM和处理器?
是否有任何实际的考虑因素可能会限制使用和效率?
谢谢,
盖伦
最佳答案
单个实例可以尝试访问所有内存,但是NUMA区域意味着诸如GC之类的东西在访问另一个区域中的内存时表现很差。这变得越来越快,并且JVM拥有一些NUMA支持,但是如果您想实现可伸缩性,则需要对其进行改进。即使这样,您也可以获得256 MB的堆空间并使用700个 native /直接内存,而不会出现此问题。 ;)
如果您有大量的内存,最大的限制是数组,集合和ByteBuffer(用于内存映射文件)的大小均限制为20亿个。 (2 ^ 31-1)
您可以使用自定义集合解决这些问题,但Java确实应该支持IMHO。
顺便说一句:您可以以4万英镑的价格用Ubuntu购买具有1 TB内存和24核/48线程的Dell R910。
顺便说一句:我只具有最大40 GB的JVM经验。
关于java - JVM内存和CPU使用率的实际限制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6667344/