问题描述:System.gc问题
问题描述:System.gc问题
我正在运行一个调度算法,其中包含一段垃圾收集代码,看起来像这样:
//garbage collection if (state.children.isEmpty()) {//if this is a leaf node (no children) state.parent.children.remove(state); System.gc(); }
起初,算法在没有任何暂停的情况下平稳运行;但是随着树变得越来越大,每次垃圾收集都会出现某种形式的暂停。
所以我想,也许如果我减少调用 gc 的次数呢?于是我将我的代码修改为:
//garbage collection if (state.children.isEmpty()) {//if this is a leaf node (no children) state.parent.children.remove(state); if(index % 10000) System.gc(); }
但实际上这似乎并没有进行任何清理,我的程序仍然会抛出 outOfMemory 异常。
我应该如何正确实现垃圾收集器,以避免调用过多次?
admin 更改状态以发布 2023年5月24日