我正在尝试在大型文本文件上执行java脚本,但它给了我这个错误
Project Properties -> Run -> VM Options -> -Xmx2048m -Xms1024m
我试图在我的netbeans项目上做到这一点:
System -> Programs -> Java -> Java -> View -> Execution Parameters -> -Xincgc -Xmx2048M
我也试过了:
{{1}}
但我没有解决问题..有什么建议吗?
答案 0 :(得分:0)
字符串存储可能非常昂贵。使用随机字符串的avarage~80个字符长,3 000 000个字符串可以消耗1毫升
public static void main(String[] args) {
List<String> list = new ArrayList<>();
String base = RandomStringUtils.random(80);
long i = 0;
try {
while (i < 3e6) {
list.add(base + i++);
}
} finally {
System.out.println("Count:" + list.size());
System.out.println("Memory:" + Runtime.getRuntime().totalMemory() / 1024d / 1024d);
}
}
输出: 数:3000000 记忆:981.5
尝试使用我在此处创建的try-finally
块来将您的代码包装在您正在阅读文件的位置。当弹出错误时,您将获得此时消耗的大约几个内存,以及您已经管理的文件的百分比。这将让您了解需要多少内存。
此外,你会知道你的-Xmx
指令是否有效,因为如果它会崩溃,可以说500mb它可以被netbeans忽略,或者系统没有可用的内存。
答案 1 :(得分:0)
我建议更改您的代码,另一种选择在此处描述:http://wiki.netbeans.org/FaqSettingHeapSize