List类似于动态数组,使用的时候不必考虑是否溢出, 可以一直动态增加的。那到底有没有个最大容量呢?有!当然List本身并没有属性或方法来说明最大容量。其最大容量与JAVA虚拟机内存大小有关,如果数组里的数据太多,会造成内存溢出。
我以我的机器测试下,当List里存放871056时,就抛出以下异常。
略....
871052
871053
871054
871055
871056
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.nio.CharBuffer.wrap(CharBuffer.java:350)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:246)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)
at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)
at java.io.PrintStream.write(PrintStream.java:476)
at java.io.PrintStream.print(PrintStream.java:561)
at java.io.PrintStream.println(PrintStream.java:700)
at SelectMain.selectRedMinMaxSum(SelectMain.java:85)
at SelectMain.selectRedBall(SelectMain.java:53)
at SelectMain.main(SelectMain.java:629)
所以需要设置JAVA虚拟机内存大小,增加动态数组List的最大容量。以eclipse开发工具为例
打开eclipse,选择Window--Preferences...在对话框左边的树上双击Java,再双击Installed JREs,在右边选择前面有对勾的JRE,再单击右边的Edit按钮,
出现一个 Edit JRE 的对话框,在其中的Default VM Arguments: 框中输入 -Xms512m -Xmx1024m ,这样设置Java拟虚机内存使用最小是512M,最大是1024M,再单击OK关闭Edit JRE 对话框,如下所示
扩展阅读
Java虚拟机(JVM)中的内存设置详解:http://developer.51cto.com/art/200906/127144.htm