Java实时应用程序的垂直扩展

sky*_*sky 7 java garbage-collection jvm heap-memory

通过GC调优,我成功地获得了实时Java应用程序的性能,并避免了可识别的GC暂停.但是,这可以容纳大约20 GB的堆空间.

硬件成本的降低使得即使是100GB的RAM机也能负担得起.但是,由于GC暂停,仍然使用Java,更高的堆大小(如50 GB)会让您经常陷入噩梦.

我知道有像堆外和分布式堆这样的选项.但是,堆外具有se/derial的缺点,并且手上的分布式堆增加了维护成本.此外,在分布式堆中,您实际上并没有充分利用RAM(比如64 GB),而这些日子正变得越来越普遍.

因此,为了充分利用RAM的潜力,Java应用程序的垂直扩展有哪些好的解决方案?

Omr*_*dan 5

我正在研究一个名为Banana的原始集合库.香蕉解决了这些问题.它很快就支持LinkedLists,HashMaps和其他可能的数据结构,而不需要保留N个对象的开销.基本上 - 整个存储可以在int []数组(或许多)中.

虽然我还没有正式发布它,但大部分都经过了很好的测试,我已经在144GB内存的服务器上成功运行,保持了快速一致的性能而没有任何GC暂停.

查看哈希映射基准,以了解如何使用Banana存储数据以及它如何垂直扩展.

https://github.com/omry/banana/wiki/Long-to-fixed-size-object-benchmark

有关更多信息,请参阅维基.