当前位置:首页 > 高性能开发 > 高性能WEB开发

何位大神懂tomcat的内存配置吗

优良自学吧提供何位大神懂tomcat的内存配置吗,哪位大神懂tomcat的内存配置吗?[size=18px][size=16px]如题,网站做数据导出的时候,超过5000条就会报内存溢出, 这边服务器是8G的内存,但是实际上只用来不到2个G,tomcat配置内存的时候,用来如下配置: -XX:PermSize=512M -XX:MaxPermSiz

哪位大神懂tomcat的内存配置吗?
[size=18px][size=16px]如题,网站做数据导出的时候,超过5000条就会报内存溢出,
这边服务器是8G的内存,但是实际上只用来不到2个G,tomcat配置内存的时候,用来如下配置:
-XX:PermSize=512M
-XX:MaxPermSize=1024M
-XX:ReservedCodeCacheSize=512M

中间那个MaxPermSize一直只能配到1024,超过了tomcat就启动不起来。 

求各位大神指教,这个应该怎样弄?
[/size][/size]
------解决思路----------------------
32位的应用程序,2G内存基本封顶了。包括:堆、虚拟机自占内存、某些直接内存申请等。

如果想突破2G,就用64位的JVM吧。
------解决思路----------------------
另外,我比较怀疑你的算法有问题,应该使用内存开销为恒定量的算法,而不是会随着数据规模增长而不断消耗内存的算法。

比如:分批导出。
------解决思路----------------------
-XX:PermSize=512M
-XX:MaxPermSize=1024M

这两个配置最好一样,都为内存的80%。
------解决思路----------------------
看你的情况 应该是调整
 -Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存,按需分配
这两个参数的大小而不是非堆的
------解决思路----------------------
可以看看这个 http://bbs.csdn.net/topics/380221821
------解决思路----------------------
Perm是方法区,一般是用来加载class文件以及保存Method之类信息的,跟你的问题并不相关。

你需要的是加大堆内存。-Xms512m -Xmx512m加上这两个参数试试 
------解决思路----------------------
考虑将数据分批查询写入输出流,而不是一次性全部Load,然后导出~
------解决思路----------------------
Tomcat单进程最高2g内存,内存再高也提高不了多少运行效率了,因为操作系统对单进程对系统资源的访问是有限制的,例如磁盘读取,线程数,cpu片段等等,如果你是服务器,有足够大内存和cpu等资源,就利用集群,而不是提高单个tomcat进程的配置

(本文来自互联网,不代表搜站(http://www.ylzx8.cn/)的观点和立场)
本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(ylzx8cn@163.com),我们会及时处理和回复,谢谢