与任何内存管理问题一样,这是一个很长的故事,所以请牢牢捕获。我们的应用程序遇到了一些内存管理问题,因此,我一直在尝试对该应用程序进行概要分析,以了解问题出在哪里。我今天早些时候看到了这个线程:TomcatSessionEvictiontoAvoidOutOfMemoryError……似乎跟我在探查器中看到的一样。基本上,如果我用Jmeter吸引了一群用户使用该应用程序,它将长时间保留在堆内存上,最终直到session开始过期为止。但是,与该线程中的发布者不同,我拥有源代码,并且可以尝试使用Tomcat来实现持久状态session,这是我今天一直在尝试的工作,但取得的成功有限。我认为这是
我最近做了thistutorial并让代码运行良好。然后,今天,我在Eclipse中重新打开项目并选择RunAs...RunonServer。从Eclipse控制台中运行的日志来看,该应用程序似乎经历了正常的加载过程,但是当我期望该应用程序改为在浏览器中加载时,Eclipse控制台中出现了以下错误消息:Exceptioninthread"http-bio-8080-exec-3"java.lang.OutOfMemoryError:PermGenspace我也确实运行了来自thistutorial的代码之前,并打开了一些blob文件,但我不认为这是导致问题的原因,因为即使我关闭所有内容
我正在按照此处给出的示例使用我的GWT应用程序中的MVP模式http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html对于MainView中的每个面板,我都有一个MainPresenter和一个sub-presenter。要显示一个新的子演示者,我会这样做:presenter=newPresenterA(newViewA(),....);presenter.go(panel)//presenterclearsthepanelanditselftothepanel当创建PresenterA时,它将
我有我正在使用的来自另一个团队的代码,我花了几天时间试图追踪我的应用程序中可疑的内存泄漏。几次redploy后我收到OutOfMemory错误。我使用了多种工具来追踪泄漏,包括YourKitJavaProfiler和IBM的SupportAssisantMemoryAnalyzer。我的应用程序是一个在WebSphere6.1上运行的Spring3.0.5J2EE应用程序,使用spring-mvc注释驱动Controller。我所做的大部分研究都指向一个我觉得非常可疑的类,我们将其称为MyFactory,它看起来像这样:importorg.springframework.context
最近我们开始使用NewRelic来监控我们在tomcat7.0.6服务器上托管的生产web应用程序,但我们观察到这个tomcat的内存占用量不断增加,并且在一周内它吃掉了所有服务器(AWSHigh-MemoryDoubleExtraLargeInstance)内存并变得无响应,恢复它的唯一方法是重新启动它。我们在启动tomcat时提供Xms和Xmx参数,但在几个小时内,tomcat进程的内存使用量与Xmx值交叉,并且它一直在增加,直到所有服务器内存都用完。这是进程命令:/usr/java/jdk1.6.0_24//bin/java-Djava.util.logging.config.f
我在调用BufferedImage.getGraphics()方法的某些框架API时遇到问题,从而导致内存泄漏。这个方法的作用是它总是调用BufferedImage.createGraphics()。在Windows机器上,createGraphics()由Win32GraphicsEnvironment处理,它在其字段displayChanger中保留一个listeners列表。当我在BufferedImagesomeChart上调用getGraphics时,someChart的SurfaceManager(保留对someChart的引用)被添加到监听器在Win32GraphicsE
我有一个巨大的文件,其中包含一个接一个由ObjectOutputStream写入的对象列表。for(Objectobj:currentList){oos.writeUnshared(obj);}现在我想使用ObjectInputStream读取这个文件。但是,我需要同时读取多个文件,所以无法将整个文件读入内存。但是,使用ObjectInputStream会导致堆内存不足错误。据我了解,这是因为ObjectInputStream存在内存泄漏并在返回读取对象后仍保留对读取对象的引用。我怎样才能让ObjectInputStream不维护任何读取的引用? 最佳答案
我有一些我运行的第三个库代码,一段时间后我遇到了OutOfMemoryError。所以我启动了EclipseMAT并分析了内存。现在似乎无法释放内存,因为有一个对象显示为GCroot:NativeStack。阅读documentation:Inoroutparametersinnativecode,suchasuserdefinedJNIcodeorJVMinternalcode.ThisisoftenthecaseasmanymethodshavenativepartsandtheobjectshandledasmethodparametersbecomeGCroots.Forexa
我们有一个在GlassfishV2.1.1下运行的复杂应用程序。为了能够动态加载我们的代码,我们实现了一个能够重新定义类的CustomClassloader。行为非常简单:当动态加载的类发生变化时,CustomClassloader的当前实例将被“丢弃”,并创建一个新实例来重新定义所需的类。除了同一个类被重新加载几次后(因此每次创建一个新的CustomClassloader),这工作得很好,我们得到一个PermGen空间错误,因为CustomClassloader的其他实例没有被垃圾收集。(该类应该只有一个实例)我尝试了不同的方法来追踪泄漏的位置:visualvm=>我进行堆转储并提取
我有一个使用hibernate3.6.4和spring3.2.4(mvc、tx和安全性)并在tomcat7中运行的Web应用程序。每次当我部署更新版本的应用程序而不重新启动tomcat时,然后tomcat使用的内存增加了大约50MB。我创建了一些堆转储并使用Eclipse内存分析器对其进行了分析。我发现每次重新部署应用程序时,都会创建一个新的WebappClassLoader实例。但即使在我使用tomcat管理器停止应用程序之后,WebappClassLoader仍保留在内存中并且不会被垃圾收集。因此,每次重新部署后,一个额外的WebappClassLoader仍保留在内存中并使用大约