环境: Redhat Advanced Server 4, jdk 1.4.2_06, tomcat 5.0.28
症状:jvm大概每一两天就要崩溃一次
解决过程:
hs_err_pidxxx.log 文件当中,前几行是:
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0xB4ACA6
Function=strcpy+0x26
Library=/lib/tls/libc.so.6
Current Java thread:
at java.io.UnixFileSystem.deleteOnExit(Native Method)
at java.io.File.deleteOnExit(File.java:881)
at org.apache.commons.fileupload.DefaultFileItem.getTempFile(DefaultFileItem.java:620)
at org.apache.commons.fileupload.DefaultFileItem.getOutputStream(DefaultFileItem.java:557)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:406)
于是搜 UnixFileSystem deleteOnExit,果然发现
虽然这个是讲jrocket的,但是一样的:
The leak is in deleteOnExit - in a way. When you call deleteOnExit, the file is added to a list of files to be deleted when the VM exits. This list is managed in native memory. Files are never removed from the list, just added. They are not even removed if they are deleted. Thus, if you keep calling deleteOnExit you will leak an amount of memory for each call.
也就是说,commons file upload 经常的频繁调用temp file,导致jvm外部的内存溢出并且崩溃。
官方网站上也有相应的bug:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6291034
commons file upload 网站上也有这个bug
https://issues.apache.org/jira/browse/FILEUPLOAD-95
并且 commons file upload 在1.1当中fix了。
所以最简单的办法就是把1.0升级成1.1 来搞定。
正在试验中,不知道长时间后会不会有问题。
分享到:
相关推荐
commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-...
在Java开发中,文件上传是一项常见的任务,Apache Commons项目中的`commons-upload`模块就是为了简化这一过程而设计的。Apache Commons FileUpload是Java的一个开源库,它提供了处理HTTP请求中的多部分数据(通常...
首先,我们需要在项目中引入`commons-fileupload-1.2.jar`和`commons-io-2.x.jar`(因为FileUpload依赖于Commons IO)这两个库。可以通过Maven或Gradle等构建工具添加依赖,或者直接将它们添加到项目的类路径中。 ...
`commons-io`和`commons-fileupload`是Apache Commons项目下的两个重要库,它们为Java提供了强大的文件操作和文件上传功能。下面将详细介绍这两个库以及如何使用它们来实现文件上传。 `commons-io`库主要提供了一...
标题 "commons-upload使用" 涉及到的是Apache Commons组件中的两个关键部分——Commons IO和Commons FileUpload,它们是Java中处理文件上传的重要工具。这篇博客文章可能详细介绍了如何利用这两个库来实现Web应用中...
File file = new File(request.getRealPath("/") + "photofiles", tempFile.getName()); item.write(file); String fname = item.getName(); %> <script language="javascript"> alert("上传相片成功!"); ...
首先,我们需要在项目中引入Apache Commons FileUpload和Apache Commons IO的依赖库。通常,这可以通过在Maven的pom.xml文件中添加如下依赖: ```xml <groupId>commons-fileupload <artifactId>commons-...
在描述中提到,虽然Java Web标准如Servlets、JSP和JSF本身不直接支持文件上传功能,但可以通过第三方库如Apache Commons File Upload和Apache MyFaces等来实现。 Apache Commons File Upload是一个非常流行的Java库...
赠送jar包:commons-fileupload-1.3.3.jar; 赠送原API文档:commons-fileupload-1.3.3-javadoc.jar; 赠送源代码:commons-fileupload-1.3.3-sources.jar; 赠送Maven依赖信息文件:commons-fileupload-1.3.3.pom;...
daemon-1.0.15-bin commons-dbutils-1.6-bin commons-digester3-3.2-bin commons-el-1.0 commons-email-1.4-bin commons-fileupload-1.0 commons-fileupload-1.1.1 commons-fileupload-1.1 commons-file upload-...
本主题“FileUploadAndDownLoad”将深入讲解如何使用JSP(JavaServer Pages)技术来实现这一功能。JSP是一种基于Java的服务器端脚本语言,它允许开发人员在HTML页面中嵌入Java代码,从而动态生成网页内容。 首先,...
Commons IO和Commons FileUpload是Java开发中两个非常重要的库,它们由Apache软件基金会提供,是许多Java项目的基础组件。 **Commons IO** `commons-io.jar` 是Apache Commons项目的一部分,它提供了大量的实用工具...
commonfileupload 一般上传运用的SmartUpload 和...commons upload 使用缓存 上传限制减少 关键字:图片上传 文件上传 代码调试过了 没什么问题 注释也不少 其实多数还是网上的资源 只不过加工了下 让跑起来而已
<s:file name="upload" label="上传的文件" /> 备注" /> 上传" /> ``` - 使用 `<s:form>` 标签,设置 `enctype="multipart/form-data"` 来确保表单可以上传文件。 - `<s:file>` 标签用于文件输入框,其...
这通常涉及修改`web.xml`文件,增加对POST请求的最大大小限制,以防文件过大导致服务器崩溃。 3. **创建解析器**:FileUpload库提供了`DiskFileItemFactory`来处理文件项,它可以将文件存储在内存或磁盘上。创建一...
同时,现代Web应用通常会结合前端框架(如jQuery File Upload或React)实现更复杂的交互和预览功能。这个压缩包提供的源代码是一个很好的学习资源,可以帮助开发者深入理解文件上传的实现细节,并在此基础上扩展自己...
将 commons-fileupload1.4 中的引用类 javax.* 修改为 jakarta.* ,支持Java8及Tomcat10以上运行。 使用方法:将Servlet*改为JakSrvlt*,例如 ServletFileUpload 改为 JakSrvltFileUpload 参考博主:...
"upload_commons_jar合集"就是这样一个针对文件上传问题的Java库组合,它包含了几个关键的组件。 首先,我们来看第一个组件`commons-fileupload-1.3.1.jar`,这是Apache Commons FileUpload项目的最新版本。这个库...
Struts2 Upload File是关于使用Apache Struts2框架进行文件上传的功能实现。在Web开发中,文件上传是一项常见的需求,例如用户可能需要上传个人头像、文档或图片等。Struts2作为Java企业级应用中广泛使用的MVC框架,...