我有一个服务可以在内存中暂存对其进行的所有调用,因为我们不想丢失数据,同时我们需要该服务因任何外部依赖(例如数据库)而失败。然后,这些分阶段的呼叫会定期在后台被拾取和处理。
如果出于某种原因,如果调用过多并且内存不足,我们需要警惕。
所以,简单地说,这个问题是:当由于资源不足导致添加到列表失败时,我需要捕获或监视什么异常来通知我?它会导致 VM 本身出现 OOM,还是也存在集合级别限制?
如果没有集合级别的限制,您会建议我如何监控服务的使用情况?目前,我们有堆使用和内存使用指标。这些够吗?此外,JVM 被配置为在出现 OOM 错误时终止(这是因为 VM 管理器随后会在终止时重新启动它正在管理的任何进程)。