gpt4 book ai didi

java - 检测内存不足错误

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:02 25 4
gpt4 key购买 nike

我想为我的系统提供一种检测是否发生内存不足异常的方法。此练习的目的是通过 JMX 公开此标志并采取相应行动(例如,通过在监控系统上配置相关警报),否则这些错误会在几天内被忽视。

对此的天真做法是设置一个 uncaught exception handler对于每个线程并检查引发的异常是否是 OutOfMemoryError 的实例并设置相关标志。但是,由于以下原因,这种方法并不现实:

  • 异常可能发生在任何地方,包括第 3 方库。我无法阻止他们捕获 Throwable 并将其据为己有。
  • 库可以生成它们自己的线程,我无法为这些线程强制执行未捕获的异常处理程序。

我看到的一种可能情况是字节码操作(例如,在 OutOfMemoryError 之上附加某种方面),但是我不确定这是否是正确的方法或者这在一般情况下是否可行。

我们启用了 -XX:+HeapDumpOnOutOfMemoryError,但我不认为这是解决此问题的方法,因为它是为其他问题而设计的 - 发生这种情况时它不提供 Java 回调。

有人做过吗?你会如何解决它或建议解决它?欢迎任何想法。

最佳答案

您可以使用内存不足警告系统;这个OutOfMemoryError Warning System可以是一个灵感。您可以配置一个监听器,该监听器在超过某个内存阈值(比如 80%)后被调用 - 您可以使用此调用开始采取纠正措施。

我们使用类似的东西,当组件的内存阈值达到 80% 时,我们暂停组件的服务,并开始清理 Action ;只有当使用的内存低于另一个可配置的阈值时,组件才会返回。

关于java - 检测内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com