设置jvm内存很容易啊。
-Xmx1024m -Xms1024m不过你这个问题的解决方式最好是修改一下smartupload的源码,smartupload默认是先从request的流中读取到内存,调用save的时候再一次性写入磁盘,你可以修改成直接从request一遍读取,一遍写入,这样只要你的request不超时的话,你上传一个G的也不会有问题的。

解决方案 »

  1.   

    这个命令就多了,推荐一本书《java性能调优》不错的书
      

  2.   

    如下设置jvm内存
    -Xmx1024m -Xms1024m
    是在http.conf文件里面的
      

  3.   

    这个问题实质跟jvm内存无关,是因为smartupload上传原理的问题;
    smartupload上传时,一次将文件读取完,然后再写到硬盘,
    源码如下:
             this.m_totalBytes = this.m_request.getContentLength();
            this.m_binArray = new byte[this.m_totalBytes];也就是说如果上传50M的文件,它会一次用50M内存读取,然后再写到硬盘;如果并发的话,就没法用了;所以smartupload上传需要严格控制上传文件大小;解决方案:commons-fileupload就行了,这种是多次读取,多次写入;总结:实质就是内存与效率之间的平衡,
    smartupload一次读写占内存,commons-fileupload多次读写占cpu
      

  4.   

    恩,谢谢。刚巧在考虑用commons-fileupload上传方式写。