you*_*raj 13 java jboss out-of-memory
我的项目中有一个上传文件场景.当我尝试上传大文件时,它会给我一个OutOfMemory错误.该错误与Java堆大小有关.
如何在Java中增加堆大小以及我需要为此更改哪个文件?我正在使用jboss 5.1服务器来运行我的应用程序.
Bal*_*usC 29
您可以通常的方式将其设置为JVM参数,例如-Xms1024m -Xmx2048m,最小堆为1GB,最大堆为2GB.JBoss将使用JAVA_OPTS环境变量来包含其他JVM参数,您可以在/bin/run.conf.bat文件中指定它:
set "JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx2048m"
Run Code Online (Sandbox Code Playgroud)
但是,这更像是一种解决方法而不是真正的解决方案.如果多个用户同时上传大文件,您迟早会遇到同样的问题.你需要不断增加记忆力.您应该配置文件上载解析器以将上载的文件存储在临时磁盘上而不是完全存储在内存中.只要不清楚您正在使用哪种解析器,就无法给出合适的解答.但是,除了经常使用Apache Commons FileUpload之外,您应该阅读带有"threshold size"作为关键字的文档来配置上传文件的内存限制.当文件大小超过阈值时,它将被写入磁盘.
我已经提到过在Windows或Linux环境中增加堆大小所需的配置更改。
Linux:
bin/standalone.conf
Run Code Online (Sandbox Code Playgroud)
检查以下行,
JAVA_OPTS
Run Code Online (Sandbox Code Playgroud)
并相应地更改它以满足您的堆大小需求
-Xms1303m: initial heap size in megabytes
-Xmx1303m: maximum heap size in megabytes
JAVA_OPTS="-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M"
Run Code Online (Sandbox Code Playgroud)
窗户:
bin/standalone.conf.bat
JAVA_OPTS="-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M"
Run Code Online (Sandbox Code Playgroud)
现在重新启动服务器,它将可以正常工作,并且不会提示任何堆大小错误。
欲了解更多信息,您可以参考下面的链接。
运行 java 时使用 -Xms 和 -Xmx 命令行选项:
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
Run Code Online (Sandbox Code Playgroud)
如需更多帮助,请输入java -X命令行。
小智 5
编辑run.conf文件中的以下条目。但是,如果您在同一JBoss上运行多个JVM,则可能要通过-Xms2g -Xmx4g的命令行参数(或您喜欢的启动/最大内存设置)运行它。
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107516 次 |
| 最近记录: |