服务器Out of Memory

之前有次把图片存储在数据库,结果读取时候报错了:Out of Memory..

图片本来不应该存储在数据库中的,消耗内存太大,既然已经这样,那就先解决问题,不改存储方式。

如果一个应用程序为了提高性能而把数据加载内存中而占用较大的内存,比如超过了默认的最大值128MB,需要加大java虚拟机可使用的最大内存,否则会出现Out of Memory(系统内存不足)的异常。启动java时,需要使用如下两个参数:
-Xms java虚拟机初始化时使用的内存大小
-Xmx java虚拟机可以使用的最大内存
java虚拟机可使用的最大内存是有限制的,缺省值通常为64MB或128MB。

下面介绍三种修改服务器方式:

1.Jboss设置:                                                                                                                                                                                                           
修改jboss运行时java虚拟机内存大小:
在"%jboss_home%/bin/run.conf"文件中的
JAVA_OPTS="-server -Xms128m -Xmx128m
把"-Xms128m -Xmx128m"这两个值作更改即可!!!(jbss目录下的bin/run.cof中修改)


2.myeclipse设置:                                                                                                                                                                                                     

服务器-configure-点击所在服务器(左侧)-展开服务器里面的的jdk,在Optional Java VM arguments中填入:
-Xms126m
-Xmx512m
设置大小,即可!

3.tomcat设置:                                                                                                                                                                                                         

Linux:
在/usr/local/apache-tomcat-5.5.23/bin 目录下的catalina.sh
添加:JAVA_OPTS='-Xms512m -Xmx1024m'
要加“m”说明是MB,否则就是KB了,在启动tomcat时会 报内存不足。
-Xms:初始值
-Xmx:最大值
-Xmn:最小值
Windows:
在catalina.bat最前面加入
set JAVA_OPTS=-Xms128m -Xmx350m
如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.
但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,
就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.上面分配200M内存就200M了..
windows服务执行的是bin omcat.exe.他读取注册表中的值,而不是catalina.bat的设置.
解决办法:
修改注册表HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationTomcat Service ManagerTomcat5ParametersJavaOptions
原值为
-Dcatalina.home="C:ApacheGroupTomcat 5.0"
-Djava.endorsed.dirs="C:ApacheGroupTomcat 5.0commonendorsed"
-Xrs
加入 -Xms300m -Xmx350m


说明:
-Xms:初始值
-Xmx:最大值
-Xmn:最小值

原文地址:https://www.cnblogs.com/jevon/p/3792221.html