2011-08-17 19 views
1

我使用的WebLogic 9.2,JDK1.5,和Oracle 10g我的应用程序,并得到了一些内存问题的WebLogic,JDK1.5内存

我有一个报告servlet的4种不同的分贝数以百万计的报告发布记录

现在我的问题是这样的,当我在一个时间(单用户)运行报告之一,没有出现内存问题说

报表时正在执行内存为775 MB 当报告完成执行内存为836 mb

现在

越早并发用户请求报告的内存泄漏甚至每个报告只有很少的内存回收结束后说

报告时正在执行内存为33 MB 报告时开始

完成执行内存为86 MB

它停留在86MB永远,直到下一个请求得到java.lang.OutOfMemoryError

我个人有T之后调用的System.gc他每个报告执行的结束,但只下到一个86MB

〜我实例化servlet的POST方法中的报告对象为每个请求

+0

很少需要System.gc。它不会做任何GC不会自己做的事情。你最大的堆大小是多少?它将在传递给JVM的'-Xmx ____ M'标志中。您是否在使用Entity Beans进行查询? – Jonathan

回答

0

什么是你堆设置与XMX和X毫秒

看起来您在运行位于Eden空间(位于Young空间内)的报告时会创建大量临时对象。这些可以通过相对于Xmx改变Xms的值来进行调整。

也许当并发用户打你的应用程序正在资源争夺底层数据库或其他任何。

我建议你用VisualVM或YourKit分析你的应用程序。也读Troubleshooting Memory Leaks