【发布时间】:2013-06-27 13:21:00
【问题描述】:
我正在使用 servlet 进行多文件上传(使用 Apache Commons FileUpload)。我的部分代码发布在下面。我的问题是,如果我一次又一次地上传文件,应用服务器的内存消耗会急剧增加。 Apache Tomcat 服务器似乎挂在内存上并且永远不会返回它。堆空间内存不足。有时它会耗尽内存异常并抛出java heap space error。
我关闭了所有输入流,我认为问题出在ServletFileUpload,谁能帮我解决如何关闭它。
ServletContext context=this.getServletConfig().getServletContext();
DiskFileItemFactory factory = new DiskFileItemFactory();
FileCleaningTracker fileCleaningTracker = FileCleanerCleanup.getFileCleaningTracker(context);
factory.setFileCleaningTracker(fileCleaningTracker);
if (isMultiPart) {
upload = new ServletFileUpload(factory);
try {
itr = upload.getItemIterator(request);
while (itr.hasNext()) {
item = itr.next();
if (item.isFormField()) {
...
【问题讨论】:
-
用 VisualVM 连接到 JVM,看看是什么占用了内存,我敢打赌它不会是 comons-upload 的东西。
标签: java web-applications servlets heap-memory apache-commons-fileupload