8-puzzle java.lang.OutOfMemoryError:超出了GC开销限制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了8-puzzle java.lang.OutOfMemoryError:超出了GC开销限制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1823字,纯文字阅读大概需要3分钟。
内容图文
![8-puzzle java.lang.OutOfMemoryError:超出了GC开销限制](/upload/InfoBanner/zyjiaocheng/778/413e6a14bc0449919673e20628d232ae.jpg)
当我运行我的8-puzzle程序时,我不断得到“超出GC开销限制”.我曾尝试为JVM添加更多内存,但这没有帮助.
这是问题的方法:
public void search() {
addToQueue(start, null);// add root
while (!queue.isEmpty()) {
currState = queue.removeFirst();
if (goal.equals(currState)) {
solution = true;
printSolution(currState);
break;
} else {
a = currState.indexOf("0");
// left
while (a != 0 && a != 3 && a != 6) {
String nextState = currState.substring(0, a - 1) + "0"
+ currState.charAt(a - 1)
+ currState.substring(a + 1);
addToQueue(nextState, currState);
nodes++;
break;
}
// up
while (a != 0 && a != 1 && a != 2) {
String nextState = currState.substring(0, a - 3) + "0"
+ currState.substring(a - 2, a)
+ currState.charAt(a - 3)
+ currState.substring(a + 1);
addToQueue(nextState, currState);
nodes++;
break;
}
// right
while (a != 2 && a != 5 && a != 8) {
String nextState = currState.substring(0, a)
+ currState.charAt(a + 1) + "0"
+ currState.substring(a + 2)
+ currState.substring(a + 1);
addToQueue(nextState, currState);
nodes++;
break;
}
// down
while (a != 6 && a != 7 && a != 8) {
String nextState = currState.substring(0, a)
+ currState.substring(a + 3, a + 4)
+ currState.substring(a + 1, a + 3) + "0"
+ currState.substring(a + 4);
addToQueue(nextState, currState);
nodes++;
break;
}
}
}
}
Start是我从文件.txt读入的String.
它可以解决一些问题,但有些会产生这个错误.
private void addToQueue(String newState, String oldState) {
if (!levelDepth.containsKey(newState)) {
newValue = oldState == null ? 0 : levelDepth.get(oldState) + 1;
unique++;
levelDepth.put(newState, newValue);
queue.add(newState);
stateHistory.put(newState, oldState);
}
}
解决方法:
您得到的错误是由于GC线程占用了98%或更多的处理器时间.
最简单的方法是将方法分解为几种不同的方法,这样就可以收集方法本地字符串.
其次使用StringBuffers进行连接,字符串连接将大大减慢速度.
还有其他你可以解决的问题,并发GC等,但帮助你的方法结构是最重要的.
内容总结
以上是互联网集市为您收集整理的8-puzzle java.lang.OutOfMemoryError:超出了GC开销限制全部内容,希望文章能够帮你解决8-puzzle java.lang.OutOfMemoryError:超出了GC开销限制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。