posts - 495,comments - 227,trackbacks - 0

问题表现:

当用户执行 一个大数据的应用时( 净字节码量约为 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)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: