我将WebLogic9.2、jdk1.5和oracle 10g用于我的应用程序,并遇到了一些内存问题
我有一个报表servlet,可以处理数百万条数据库记录的4种不同类型的报表。
现在我的问题是,当我一次运行一个报告(单个用户)时,没有发生内存问题,比如
报表执行时内存为775mb,报表完成执行时内存为836mb
现在
并发用户请求报告的时间越早,内存泄漏就会开始
即使在每个报告结束后,也只有很少的内存被回收
报表执行时内存为33mb,报表完成执行时内存为86mb
它将永远保持在86mb,直到下一个请求获得java.lang.OutOfMemoryError
我在每次报告执行结束后都调用了System.gc,但它只能达到86mb
~我在servlet的post方法中为每个请求实例化一个报表对象
发布于 2011-08-18 16:21:48
对于Xmx和Xms,您的Heap设置为什么
看起来您在运行报表时创建了很多临时对象,这些对象位于Eden空间(在Young空间内)。这些可以通过改变Xms相对于Xmx的值来调优。
也许当并发用户访问你的应用程序时,会对底层数据库或其他任何东西产生资源争用。
我建议您使用VisualVM或YourKit分析您的应用程序。另请阅读Troubleshooting Memory Leaks
https://stackoverflow.com/questions/7089675
复制相似问题