我在Java中利用大内存大小的最佳实践是什么?

时间:2018-08-24 11:04:08

标签: java caching memory heap heap-memory

我有一个应用程序服务器服务器,上面有64 GB内存。还有一个Java Web应用程序。利用所有这64 GB的最佳实践是什么?我需要存储一大套对象(HashSet) 使用-Xms -Xmx是最佳解决方案吗?但是GC会运作良好吗? 我应该使用第三方解决方案,例如缓存库(内存缓存等)吗?

1 个答案:

答案 0 :(得分:2)

一个非常普通的问题,所以是一个广泛的答案。

  • 尽管最近做得更好,但是两个“免费” JRE(Oracle,IBM)都不是“支持” 内存的“著名”。如果出于任何原因确实需要一个JVM,那么您可能应该硬着头皮从Azuul购买诸如zing之类的产品。 zing允许您每个JVM最多使用2 TB,它还旨在最大程度地减少GC暂停。 (这是其他VM的真正问题:至少在几年前,它们的GC暂停会随着内存大小而呈 linear 的增长。)
  • 但是,到了2018年,更好的方法是:扩大规模而不是扩大规模。含义:宁可拥有多个JVM(可能会消耗4、8、16 GB),并使用负载平衡之类的方法来保持这些JVM的繁忙。

换句话说:当然,如果您有一个大型整体应用程序,那么只能通过添加更多RAM来“扩展”,那么,您必须忍受这一点。但是,如果您想了解花钱的更明智的方法,请研究微服务,以及如何使用它们将整体拆分成许多小部分(以及通过实例化进行扩展的地方)这些小部分的更多