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

Let's say money was not a limiting factor, and I wanted to write a Java program that ran on a single powerful machine.

The goal would be to make the Java program run as fast as possible without having to swap or go to disk for anything.

Let's say that this computer has:

1 TB of RAM (64 16GB DIMMs)

64 processor cores (8 8-core processors)

running 64-bit Ubuntu

Could a single instance of a java program running in a JVM take advantage of this much RAM and processors?

Are there any practical considerations that might limit the usage and efficiency?

OS process (memory & threads) limitations?

JVM memory/heap limitations?

JVM thread limitations?

Thanks,

Galen

解决方案

A single instance can try to acces all the memory, however NUMA regions mean that things such as GC perform badly accessing memory in another region. This is getting faster and JVM has some NUMA support but it needs to improve if you want scalability. Even so you can get 256 MB of heap and use 700 of native/direct memory without this issue. ;)

The biggest limitation if you have loads of memory is that arrays, collections and ByteBuffer (for memory mapped files) are all limited to a size of 2 billion. (2^31-1)

You can work around these problems with custom collections, but its really something Java should support IMHO.

BTW: You can buy a Dell R910 with 1 TB of memory and 24 cores/48 threads with Ubuntu for £40K.

BTW: I only have experience of JVMs up to 40 GB in size.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值