目前在smartGWT项目中工作,当应用程序执行任何CRUD或网格加载和刷新操作以及部署在tomcat服务器7.0中的应用程序时,它会消耗大量内存。我已经在tomcat中尝试过线程规范和内存限制,但它不会工作。请你建议避免内存泄漏的方法。等待你的回复。
答案 0 :(得分:0)
为了避免内存泄漏。我们应该获得有关在应用程序上分配的对象的信息。如果您使用的是IBM JDK,那么当JVM抛出OutOfMemory时,JVM将收集javacore,系统核心和snaptrace。在系统抛出OOM之前,我们不会清楚地了解对象分配和分配模式。
例如:如果在应用程序运行时间中间使用systemcore。有可能GC还没有运行来清理死对象,因此当前快照可能无法全面了解应用程序分配。 当JVM抛出OOM时,它意味着GC启动并且所有可能的死对象集合都要小心,因此分析堆中的现有对象将反映java堆上的真实信息。
收集日志后,在Memory Analyzer工具中加载系统核心。 https://www.ibm.com/developerworks/java/jdk/tools/memoryanalyzer/ 它将帮助您识别泄漏。
如果您使用的是Oracle JDK,请关注 http://www.oracle.com/technetwork/java/javase/memleaks-137499.html