最近服务器上老是报出outOfMemory 的错误, 内存不足,无法创建新的可用
线程。服务器上是64为的winServer 08,但是用的是32位的jdk和tomcat。并且
还部署了两个配套程序,tomcat是默认配置。
在本地测试的时候,是32为的winServer, jdk,tomcat;
本地从没出现过outOfMemory的问题,后来经过多方调试查询验证。
发现在本地能跑到5000多个线程,而在 64位的情况下只有3000多一点点,琢磨
着内存分配不够,因为本地的三个程序, 有个是部署在另外一台机子上;
这么一想, 分配给jvm 的内容不够,32位情况tomcat 最多能支持 1.5G
但是没分配那么多给tomcat, 于是决定改变下64位winServer 的项目部署。
只留下了一个主程序, 两个配套程序都迁移到另外一台pc上, 现在运行没问题
。
说明,tomcat运行的内存不一定就有设定的那么,得要系统有足够的内存分配给
tomcat才行。
如果内存4G,你tomcat内容设置成1.5G, 那么最好顶最多正常跑两个tomcat。
线程。服务器上是64为的winServer 08,但是用的是32位的jdk和tomcat。并且
还部署了两个配套程序,tomcat是默认配置。
在本地测试的时候,是32为的winServer, jdk,tomcat;
本地从没出现过outOfMemory的问题,后来经过多方调试查询验证。
发现在本地能跑到5000多个线程,而在 64位的情况下只有3000多一点点,琢磨
着内存分配不够,因为本地的三个程序, 有个是部署在另外一台机子上;
这么一想, 分配给jvm 的内容不够,32位情况tomcat 最多能支持 1.5G
但是没分配那么多给tomcat, 于是决定改变下64位winServer 的项目部署。
只留下了一个主程序, 两个配套程序都迁移到另外一台pc上, 现在运行没问题
。
说明,tomcat运行的内存不一定就有设定的那么,得要系统有足够的内存分配给
tomcat才行。
如果内存4G,你tomcat内容设置成1.5G, 那么最好顶最多正常跑两个tomcat。
针对服务器频繁出现OutOfMemoryError的问题,本文通过调整部署架构,将部分应用迁移至其他服务器,有效解决了内存溢出的问题,并分析了32位与64位系统下内存分配的区别。
2032

被折叠的 条评论
为什么被折叠?



