tomcat中 java VM内存如何设置?
因为用到了smartupload上传文件,而文件有8、90M大,所以要重新设置内存大小。
自己百度设置了下,发现只能上传50M左右的。
所以,想请教下如何 如何设置 java VM,才能保证100M内的文件都能上传成功?
[解决办法]
这个命令就多了,推荐一本书《java性能调优》不错的书
[解决办法]
这个问题实质跟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