java 上传大文件(1G)报错 java.lang.OutOfMemoryError

java.lang.OutOfMemoryError: Java heap space
java.util.Arrays.copyOf(Arrays.java:2271)
java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
com.landa.util.FileToByte.getBytesFromFile(FileToByte.java:25)
com.landa.action.NewsAction.addNews(NewsAction.java:111)

代码:
  public static byte[] getBytesFromFile(File f){
    if (f == null){
        return null;
    }
    try {
        FileInputStream stream = new FileInputStream(f);
        ByteArrayOutputStream out = new ByteArrayOutputStream(1000);

        byte[] b = new byte[1000];
        int n;
        while ((n = stream.read(b)) != -1){

            out.write(b, 0, n);
        }
        stream.close();
        out.close();
        return out.toByteArray();
    } catch (IOException e){
        e.printStackTrace();
        System.out.println("程序发生错误,抛出异常为 "+e.getMessage());
    }

JVM内存不足,运行时加参数-Xmx${size}M增加可用内存。

1GB的文件就不要直接上传了。即便你改大设置,那2G呢4G呢?你应该换一个思路,在客户端部署activex控件,分块上传,服务器分块接收,再组装起来。