java - 从 OOM 中恢复的“对冲”技术
问题描述
我正在开发一个在捕获到时关闭的服务OutOfMemoryError
,该机制通过UncaughtExceptionHandler
以下方式实现:
private byte[] hedge = new byte[0x10000];
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
hedge = null;
log.error(e);
//signals the service to shut down whenever any thread crashes with an OOM
Service.shutdown();
});
我发现了几篇关于 OOM 恢复的旧文章,可以追溯到 2000 年代初,就像这篇文章一样,它们解释了“对冲”模式,在这种模式下,分配一个数组并在捕获 OOM 时取消引用它。
我想知道这种模式是否有意义并被真正应用?特别是,我怎么知道取消引用数组的空间没有立即被任何其他线程占用?
解决方案
推荐阅读
- lua - 尝试在 Lua 中重置游戏
- javascript - 仅使用 Javascript 或 Jquery 从图像中提取多个图像,而不使用 CSS
- python - DeepSpeech 安装错误:“ImportError:DLL 加载失败:找不到指定的模块。”
- kubernetes - 如何在 AWS EC2 中设置的 kubernetes 仪表板中将 keycloak 部署为 pod?
- java - 如何在 IntelliJ IDEA 中启用 Java 14 记录?
- excel - 在多行数据的列中查找最后一个活动单元格
- c# - C# Google API - 收到无效的 JSON 有效负载
- angular - 以角度获取 GET http://localhost:4200/null 404(未找到)
- amazon-web-services - 无法将 docker 容器绑定到辅助接口
- javascript - 如何只运行一次javascript脚本而不让我的表单ajax调用运行