问题表现:
当用户执行
一个大数据的应用时(
净字节码量约为
5M
)时,系统会提示出错:
前台错误为:
HTTP
Status 500
-Dispatch[EAITool] to method listCurTree retrun an exception
(
以下省略
)
………………………………………………………
………………………………………………………
后台错误为:
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start(Native Method)
at org.apache.catalina.loader.WebappLoader.notifyContext(WebappLoader.ja
va:847)
(
以下省略
)
………………………………………………………
………………………………………………………
问题分析:
由于
TOMCAT
内存溢出而引发的问题,主要原因是
JVM
的虚拟内存默认为
128M
,当超过这个值时就把先前占用的内存释放,而导致好象
TCP/IP
丢包的假象,出现
HTTP500
的错误。
解决方法主要是加大
TOMCAT
可利用内存,并在程序当中加大内存使用。
解决方法:
方法:加大
TOMCAT
可利用内存:
在
TOMCAT
的目录下,也就是在
TOMCAT41/bin/catalina.bat
文件最前面加入
set JAVA_OPTS=-Xms800m -Xmx800m
表现效果是当你启动
TOMCAT
时,系统内存会增加近
800M
使用
操作方法:
1
)、先关掉
WINDOWS
服务当中的
TOMCAT4
服务。
2
)、再找到
TOMCAT/BIN
目录下
startup.bat
,双击打开它,你会发现现
WINDOWS
内存占用会增加近
800M
。
3
)、执行程序,因为是
TOMCAT
重新编译程序,所以第一次会比较慢。
结论:
经过测试,我们得出如下数据:
当
系统传输约
2000
条数据时,大约近
12M
的净数据(不压缩时),系统辅助运行的内存大约占用
150M
左右的空间,也就是近
200M
的内存占用,而我们扩大了近
800M
的
JAVA
内存使用,这对于业务本身来说是足够了。所以你们不用担心大数据量的传递问题。
基于
JAVA
虚拟机的原理,
JAVA
自动有垃圾回收机制,也就是在你对一些内存长时间不使用时(近
2
分钟,取决于使用频度和优先级等),就会自动垃圾回收,从而释放不用的内存占用。
posted on 2006-08-04 20:15
SIMONE 阅读(848)
评论(0) 编辑 收藏