问题表现: 当用户执行一个大数据的应用时(净字节码量约为5M)时,系统会提示出错: 前台错误为:HTTP Status 500-Dispatch[EAITool] to method listCurTree retrun an exception (以下省略) ……………………………………………………… ……………………………………………………… 后台错误为:java.lang.OutOfMemoryError: unable to create new native thread (以下省略) ……………………………………………………… ……………………………………………………… 问题分析: 由于TOMCAT内存溢出而引发的问题,主要原因是JVM的虚拟内存默认为128M,当超过这个值时就把先前占用的内存释放,而导致好象TCP/IP丢包的假象,出现HTTP500的错误。 解决方法: 方法:加大TOMCAT可利用内存: 操作方法: 结论: 经过测试,我们得出如下数据: 当系统传输约2000条数据时,大约近12M的净数据(不压缩时),系统辅助运行的内存大约占用150M左右的空间,也就是近200M的内存占用,而我们扩大了近800M的JAVA内存使用,这对于业务本身来说是足够了。所以你们不用担心大数据量的传递问题。 基于JAVA虚拟机的原理,JAVA自动有垃圾回收机制,也就是在你对一些内存长时间不使用时(近2分钟,取决于使用频度和优先级等),就会自动垃圾回收,从而释放不用的内存占用。
|