异步内存监控与杀害日记

Posted on 2021-09-03 21:11  用户注册了一次  阅读(31)  评论(0编辑  收藏  举报

Java,主线程启动子线程,原地wait+awake,检查子线程堆内存申请,并在超额时kill掉。

这个操作可以准确检查cpuTime,堆内存有点问题,会意外杀死健康线程(测试环境,未混入不健康线程)

需HotSpot JDK

1.首先怀疑子线程非alive,经排除法排除

2.次怀疑采样取数不准,采用4次采样求平均方式,测试中。。。。。

3.求平均无法避免该问题,已证实为native方法返回的堆内存值在极小的概率下不准

4.改为将总线制分成四份,分阶段监控,监控满阶段数量后触发kill线程,测试中

5.测试成功,结果满意,已回馈开源项目