起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 746|回复: 14

[错误]Java heap space,如何解决?**

[复制链接]
发表于 2006-11-17 09:45:49 | 显示全部楼层 |阅读模式
严重: Servlet.service() for servlet statelessbizserver threw exception
java.lang.OutOfMemoryError: Java heap space

1。DELL服务器,内存1G
2。机器启动时,sqlservr.exe 占用内存50m左右
3。tomcatservice.exe占用内存约45-48m左右
十分钟左右,未做其它操作,仅打开X3 协同管理系统,操作单位维护功能,我在表中有10000条记录。sqlservr.exe 占用内存为初始时三倍,tomcatservice.exe为两倍。
接着再操作其它功能,录入一些数据,约一个小时以后,再次查看时sqlservr.exe点用内存286m,tomcatservice.exe116m,此时打开单位维护功能就提示以上错误。

另:我在catalina.bat文件中增加了语句set CATALINA_OPTS=%CATALINA_OPTS% -Xms256m -Xmx256m
回复

使用道具 举报

 楼主| 发表于 2006-11-17 10:18:40 | 显示全部楼层
另,我在没关闭SQL Server+TOMCAT情况下打开x3 studio,将单位维护功能的数据表取数改为每次只取25条记录,仍未能解决问题。
回复 支持 反对

使用道具 举报

发表于 2006-11-17 12:00:54 | 显示全部楼层
正在分析中...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-17 17:54:25 | 显示全部楼层
稍稍优化了一下,打开没问题,不过在取全部数据时,时不时还是出现同样错误。
回复 支持 反对

使用道具 举报

发表于 2006-11-17 18:58:40 | 显示全部楼层
出现这个问题,是正常的。一般发生在大数据量查询,或者峰值并发时刻的普通数据量查询。
Java是采用内存回收机制来工作的,请参考 http://www.itcfan.com/Article/pcsj/200602/31617.html
所以在瞬间达到比较大的内存占用是很正常的,当这些对象不在使用以后会自动回收的
另外,你分配给Tomcat的内存还是小
数据库内存增长可能跟tomcat的数据缓冲池配置有关系

我们公司的内部系统是不关机的,数据量也很大,我们公司对这个系统非常的依赖,也没有出问题
回复 支持 反对

使用道具 举报

发表于 2006-11-28 09:24:42 | 显示全部楼层
楼主,问题有进展马>,无论怎样,都请反馈一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-13 10:49:49 | 显示全部楼层
这段时间有别的事,一直没有彻底解决这个问题,我们服务器一周会重启几次,还经常重启Tomcat服务,现在发展到需要重启sql server来释放内存(一早上它就占用了500M内存,只增加不减少)。
回复 支持 反对

使用道具 举报

发表于 2006-12-13 11:45:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2006-12-13 11:45:59 | 显示全部楼层
以下内容转贴自
http://www.cydxc.tianyaclub.com/ ... 666817&
======================
关于网站服务器并发数问题的一些想法作者:libaike 提交日期:2006-12-7 14:10:00 | 访问量:25
平日里我们自己建设一些用来学习的网站服务器,似乎只要能够运行我们的网页就可以了,好像并没有什么太大的困难。但是,当我们真正要建立一个用来正式运行的网站,并且访问人数有一定规模的时候,我们就开始出现各种各样的问题。比如说打开网页非常慢,一会又不能读取数据库等等。

当出现这些问题的时候,我们需要知道出现问题的原因,分析后可能影响效率的地方大概有如下几处:
1、服务器的带宽
2、服务器的机器硬件配置问题
3、操作系统(如unix)的配置问题
4、网站服务器软件(如Tomcat)的配置问题
5、数据库(如Oracle)的配置问题
6、其他相关应用程序的配置问题

为了提高服务器的并发连接数,操作系统可作的调整是增加系统的信号量参数,以unix为例,就是调整/etc/system文件中semmns参数。

对Tomcat来说,可以调整server.xml配置文件中的maxProcessors参数,这是tomcat允许的最大的并发连接数设置。

此外,如果在tomcat中配置了数据源,则还可以优化数据源的设置。在tomcat的数据源配置中,maxActive是最大激活连接数,表示同时最多有多少个数据库连接。maxIdle是最大的空闲连接数,表示即使没有数据库连接时依然可以保持多少个连接而不被清除。

最后,调整tomcat的默认使用内存数,tomcat默认可以使用的内存为128MB,修改tomcat/bin/catalina.sh文件,在文件的前面加上JAVA_OPTS='_Xms256m _Xmx512m'。
JAVA_OPTS='_Xms[初始化内存大小] _Xmx[可以使用的最大内存]'

对于数据库来说,可以增减数据库的使用内存。此外,如果总是连接不了数据库,则有可能是数据库允许的并发连接数太少了。
回复 支持 反对

使用道具 举报

发表于 2006-12-13 11:46:45 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-25 21:35 , Processed in 0.036885 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表