gpt4 book ai didi

java - WebSphere 7 - 过多的垃圾收集会导致内存不足吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:51 26 4
gpt4 key购买 nike

问题: 超出 native 内存异常并想知道过多的垃圾收集是否会导致这种情况?此外,任何有关 GC 策略或调整的建议都会有所帮助。我不确定我所拥有的是否值得改变。

很好的引用 StackOverflow 问题: Which GC Policy to Use

规范:

  • 服务器环境:Websphere Version 7
  • GC 策略:默认 (optthruput)
  • Java 1.5
  • 堆:8 GB
  • 在虚拟机中运行
  • 分析工具:应用动态

初步分析:

  1. 我假设内存泄漏,但垃圾回收看起来没问题,因为它回收了内存
  2. native 内存异常让我认为 VM 外部的内存正在耗尽,但我不确定是如何耗尽的。

随附的屏幕截图:

1.1-4 小时的堆利用率。每个绿色小垃圾桶代表一个主要的垃圾收集点。1.2 上图中GC耗时。1.3 内存不足异常期间堆利用率的情况。

enter image description here

异常:

EJB threw an unexpected (non-declared) ejb Exception data: java.lang.OutOfMemoryError: native memory exhausted at garbagecollection.mycode.test at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1658) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1598) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:149) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125) at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:80) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:935) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:503) at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:875) at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1784) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1646)

最佳答案

您收到的错误消息表明 native 内存存在问题,即内存 堆之外。垃圾收集器不负责堆外内存,为什么垃圾收集器设置不能影响此错误。过多的垃圾收集不应导致 native 内存问题(当然,除非 GC 中存在错误)。

如果没有更多信息,很难说是什么导致了这个特定的错误。我假设您的机器上至少有 12 GB 的可用 RAM?否则,您只是在运行一个对于可用内存来说太大的堆。

Java 中可能耗尽 native 内存的一些示例:

  • native (JNI) 代码中的泄漏

  • 直接分配多个ByteBuffer

或者可能没有泄漏,这种行为对于您的应用程序来说是预期的,您只需要允许更大的进程或购买更多内存。

解决问题的第一步是根据可能的进程大小限制检查进程大小。您可以在没有实际泄漏的情况下简单地遇到这样的限制。

如果这不是问题,请跟踪一段时间内的进程大小,尤其是与可用内存相关的情况,以查看您是否有“泄漏”行为。

如果您确实认为自己存在 native 内存泄漏,请确定哪些库使用了您正在使用的 JNI(例如 JDBC 驱动程序),并尝试将它们替换为纯 Java 版本。此外,检查此类库中已知的内存泄漏错误以及您的 JVM 版本和 WebSphere 版本。

如果失败,您将不得不求助于 native 内存泄漏故障排除工具。那是另一个问题。

关于java - WebSphere 7 - 过多的垃圾收集会导致内存不足吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30174295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com