如何在 java 中调整缓存密集型应用程序?

How to tweak cache intensive app in java?

有谁知道编写仅使用缓存作为存储的应用程序时正确的configuration/development方法吗?

为了提供一些背景信息,应用程序不需要存储任何信息(它实际上存储时间戳,但我稍后会解释)因为它只读取另一个应用程序写入的内容。我们有一个从该应用程序的数据库中读取的存储过程,returns 我们当时的信息。从应用程序启动的那一刻起,任何更新都会通过主题通知,因此不再需要数据库(直到下次重新启动)。

加载所有内容后,当某些消息被消耗以循环遍历它们并单独处理它们时,必须读取缓存中的每条记录。应用程序保留一个 Lock 对象映射,每个对象对应缓存中的每条记录,以避免竞争条件。如果记录满足特定条件,则会使用最多 5000 条记录的后写将时间戳写入缓存和数据库。

该应用程序已经开发,但我认为我们在 GC 方面遇到了一些问题。我们不断收到尖峰,我想知道是否有关于如何减少尖峰的建议。

这些是我们到目前为止所做的事情:

除此之外,我不知道JVM是如何配置的,使用了什么样的GC。有人可以建议我开始阅读的任何想法或任何博客或文档吗?

谢谢!

因为你是 运行 Java 8 你可以改变垃圾收集器。所谓的 "Garbage First" GC 自 Java 7 的早期版本以来一直作为一个选项存在。它初期的问题已经解决,通常建议用于需要快速响应的交互式应用程序。

它可以通过使用 -XX:+UseG1GC 启用,并将成为 Java 9 上的默认设置。

http://www.oracle.com/technetwork/tutorials/tutorials-1876574.html

阅读更多相关信息