带有ArrayList的Java OutOfMemoryError>
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了带有ArrayList的Java OutOfMemoryError>,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1149字,纯文字阅读大概需要2分钟。
内容图文
我想用Java创建一个非常大的图形(有大约1000万条边).我打算列出< List< Integer>>用里面的List< Integer>描述边缘.描述每条边的两个顶点(顶点是整数类型).
在将约100万条边添加到图形后,以下代码抛出OutOfMemoryError. (为了讨论起见,我简化了边缘的生成方式.)
public static void main(String[] args) {
List<List<Integer>> graph = new ArrayList<List<Integer>>();
for (int i = 0; i < 10000000; i++) {
List<Integer> edge = new ArrayList<Integer>();
// the real edges are more complicated (than from vertex i to vertex i+1)
// this is simplified for the sake of the discussion here
edge.add(i);
edge.add(i+1);
graph.add(edge);
}
}
我搜索了OutOfMemoryError,并且我已经将Eclipse的初始堆大小增加到2G:-Xms2g -Xmx4g -Xss2m(它被传递给JVM).但这并没有解决问题.
然后我想也许我应该垃圾收集List< Integer>边缘变量,通过调用System.gc(),以防其内存未被清除.那也行不通.
我想也许问题出在List< List< Integer>>数据结构.我尝试了List< int []>,这持续了一段时间:在OutOfMemoryError发生之前添加了更多边.我现在没有更好的主意.
我一直在寻找类似的问题,但没有找到太多帮助.我想知道是否有人有这种情况的经验.
解决方法:
让程序使用Eclipse中的更多内存:
转到运行 – >运行配置.你会看到这个窗口
单击Arguments
输入您的VM参数
内容总结
以上是互联网集市为您收集整理的带有ArrayList的Java OutOfMemoryError>全部内容,希望文章能够帮你解决带有ArrayList的Java OutOfMemoryError>所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。