我有一个网络服务器与nginx,apache和tomcat7。在这个服务器上运行一个java程序。我也可以用腻子访问服务器。
通常每天一次,服务器上的堆内存已满(CMS Old Gen-Heap Memory on 100%),程序变得非常慢。然后我登录服务器,重新启动tomcat7服务。堆内存被清除,程序再次正常运行。
所以我有两个问题。
我不知道这对你来说是否足够。如果你需要什么,请告诉我。
亲切的问候
编辑:
Memory Pool Type Maximum CMS Old Gen Heap Memory 316.81 MB Eden Space Heap Memory 66.56 MB Survivor Space Heap Memory 8.31 MB Total 391.68 MB
这是Apache Manager的摘录(不幸的是,我还不能发布任何图片)。当CMS Old Gen 100%运行时,程序开始运行得非常慢。在本地版本的应用程序上,我启动了JVM监视器,查看是否存在泄漏。显然,垃圾收集器在那里运行正常,但在服务器上运行不正常。
有什么建议吗?
所以我增加了堆的大小,现在我正试图关闭漏洞。非常感谢你的帮助。再见()
垃圾收集器按默认值运行。如果想确保jvm正在运行,可以使用-Xloggc:{file}选项启动jvm,以获取有关其活动的一些调试信息。
如果需要重新启动tomcat以清除堆,那么应用程序中可能存在内存泄漏,正如评论已经指出的那样。
如果我有一个垃圾收集器来跟踪分配的每个对象,并在它们不再有对它们的可用引用时立即释放它们,你还会有内存泄漏吗? 考虑到内存泄漏是指没有任何引用的分配,这不是不可能的吗?还是我遗漏了什么? 编辑:所以我认为内存泄漏是您在代码中不再引用的分配。您仍然可以引用的大量累积分配不是我在这里考虑的泄漏。 我也只是在谈论普通的G.C.,已经有一段时间了,但我知道像循环引用这样的案例不会把他们绊倒。我不需要任何语
问题:正在退出本机内存异常,并想知道过多的垃圾收集是否会导致这种情况?此外,关于GC策略或调优的任何建议都会有所帮助。我不确定我所拥有的是否值得改变。 好的参考StackOverflow问题:使用哪个GC策略 规格: 服务器环境:Websphere版本7 初步分析: 我假设内存泄漏,但是垃圾回收看起来可以回收内存 附加屏幕截图: 堆利用率为1.1-4小时。每个绿色小垃圾桶代表一个主要的垃圾回收机制
问题内容: 根据 jls§8.9.2枚举主体声明 枚举声明声明终结器是编译时错误。枚举类型的实例可能永远不会完成。 由于finalizer在Garbage Collector运行之前执行,如果不存在finalizer,这是否意味着类型始终保持加载在内存中,而Garbage Collector不适用于该类型? 问题答案: 如果编译像这样的枚举 您将看到生成的字节码(即)对应于合成类: 因此,枚举的实
问题内容: 与同事进行了讨论。当诸如c#或java垃圾之类的语言收集诸如字符串之类的对象并将其返回到堆时,它们是否也清除了该内存块,例如用0或1覆盖? 我的假设是,除非按原样返回该块,除非使用诸如带有带有finalize重载的securestring之类的类将该块清零。 问题答案: 实际上,不,这不会发生。覆盖刚刚释放的内存需要花费时间,因此会有性能损失。“安全”之类的物体SecureString
我有一个问题:伊甸园100%使用,旧的100%使用,从空间100%使用,但没有垃圾收集触发,没有oom -xmx2g-xms2g-xmn1g-xx:survivorratio=8-xx:permsize=256m-xx:maxpermsize=256m-xx:+heapdumponoutofmemoryerror-xx:reservedcodecachesize=128m-xx:initialco
问题内容: 我遇到这样的情况,我的Android应用程序无法及时执行软实时任务,因为调用了Garbage Collector需要花费几毫秒的时间。分配给GC的时间只有几毫秒,不足以错过一些重要的期限,这些期限是从IO设备读取数据的小任务。 我当时正在考虑引入另一个线程,并赋予它轮询重要数据的任务。但是我不确定GC是否挂起所有线程还是仅挂起内存占用线程? 问题答案: 在Patrick Dubroy撰