使用FOR循环时发生java堆内存使用异常
当我运行下面的程序时,当for循环在i=1031521开始执行时,我得到了异常。如何克服这种类型的内存使用使用FOR循环时发生java堆内存使用异常,java,memory-management,for-loop,out-of-memory,Java,Memory Management,For Loop,Out Of Memory,当我运行下面的程序时,当for循环在i=1031521开始执行时,我得到了异常。如何克服这种类型的内存使用 class wwww { public static void main(String args[]) { String abc[]=new String[4194304]; String wwf=""; int s_count=524286; for(i
class wwww
{
public static void main(String args[])
{
String abc[]=new String[4194304];
String wwf="";
int s_count=524286;
for(int i=0;i<4194304;i++)
{
System.out.println("----------enter--------"+i);
abc[i]=""+i;
System.out.println("----------exit--------"+i);
}
}
}
这是因为您将耗尽分配给jvm的所有堆空间 可以在运行程序时使用参数指定要分配的堆大小 这是一个例子:
java -Xmx256m MyClass
此处最多将分配256 MB堆空间您可以:
-Xmx
到java
的命令行参数完成的class wwww
{
public static void main(String args[])
{
String abc[]=new String[4194304];
String wwf="";
int s_count=524286;
for(int i=0;i<4194304;i++)
{
System.out.println("----------enter--------"+i);
abc[i]=""+i;
System.out.println("----------exit--------"+i);
}
}
}
不要执行此类型的内存使用。您正在创建4194304个字符串,其一般形式为
“”+i
。您不需要同时使用该形式的4194304个字符串。您一次只需要其中一个,如果有,您可以在每次需要时创建它。您可以在此处找到答案。