Weblogic 8.13内存泄露

huguohong 2007-07-10 09:21:18
我在8.13 的 WorkShop域上开发一个WebService: admin.jws

里面只写了一个方法
/**
* @common:operation
*/
public int [ ] Test()
{
int [] t = new int[100000]; //10万
return t;
}

在.net客户端调用该Web Service , 开2个客户端程序,不停的点击按钮调用 Test() ;

在 Weblogic Server Console 的监视窗口,发现内存狂涨(大概每点击一次请求,内存增加14-17M),而且无法回落,强制垃圾收集,基本也没什么作用。点击10以上,就出现 OutOfMemoryError 。

请版主、高手帮忙分析下(这是测试,但我实际的程序也会向客户端返回许多的数据库记录,数据量可能比上面的 Int[] 数组要大)。
...全文
286 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rgroup 2007-10-25
  • 打赏
  • 举报
回复
看起来是你的代码写得有问题,而不是垃圾回收的问题。

很有可能是你把返回的数组放在一个static变量或者容器里了。这样的话,显然无法回收。因为GC无法判断哪些对象是可以回收的,那些是不能回收的。建议学习一下java垃圾回收的机制以及写代码是如何防止内存溢出的方法。
southben 2007-08-03
  • 打赏
  • 举报
回复
请问你的数组返到那去了,估计是没有释放掉
你的java内存设置多大
cecilianet 2007-08-03
  • 打赏
  • 举报
回复
我们目前的项目也遇到类似的问题,在控制台里面看到内存溢出,不知道是否可以在weblogic里面设置参数,收回内存呢??
关注。。。。
xieboshi 2007-07-14
  • 打赏
  • 举报
回复
int是基本数据类型,使用内存栈空间,所以会很容易OutOfMemory,你可以算一下10万和int数据占多大内存,而你实际程序中大多会用堆内存,这只受限于你硬件(内存)配置,应该不容易出现内存溢出,压力测试可以用一些工具,如jmeter,而且还要掌握一些方法,不然不能反映出真实的使用负荷情况。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧