- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们试图将我们的应用程序从 OC4J 迁移到 Tomcat 7.0。该应用程序适用于 OC4J,但在 tomcat 中,当运行 10 个用户的负载测试时,性能会受到影响。我们收到这些错误,应用程序不再响应。
---java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "ajp-bio-8009-exec-231" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "ajp-bio-8009-exec-236" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "ajp-bio-8009-exec-208" java.lang.OutOfMemoryError: GC overhead limit exceeded
java.lang.OutOfMemoryError: GC overhead limit exceeded
java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "Thread-33" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "ajp-bio-8009-exec-258" java.lang.OutOfMemoryError: GC overhead limit exceeded
java.lang.OutOfMemoryError: GC overhead limit exceeded
我们尝试了 JAVA_OPTS="-Xms4096m -Xmx8192m
。看起来我们仍然遇到错误。请建议我们可以尝试的可能选项..
GC 调用次数=593(完整 539): PSYoungGen 总计 701120K,使用 374720K [0x00000007aaab0000, 0x00000007eaf60000, 0x0000000800000000) 伊甸园空间 374720K,100% 使用 [0x00000007aaab0000,0x00000007c18a0000,0x00000007c18a0000) 来自空间 326400K,已使用 0% [0x00000007d70a0000,0x00000007d70a0000,0x00000007eaf60000) 空间 339328K,0% 使用 [0x00000007c18a0000,0x00000007c18a0000,0x00000007d6400000) ParOldGen 总计 2796224K,使用 2796223K [0x0000000700000000, 0x00000007aaab0000, 0x00000007aaab0000) 对象空间 2796224K,已使用 99% [0x0000000700000000,0x00000007aaaaffe8,0x00000007aaab0000) PSPermGen 总计 50688K,已用 50628K [0x00000006fae00000, 0x00000006fdf80000, 0x0000000700000000) 对象空间 50688K,已使用 99% [0x00000006fae00000,0x00000006fdf713a8,0x00000006fdf80000)4482.450:[完整GC [psyounggen:374720k-> 339611k(701120k)]/p>
最佳答案
GC Overrhead Limit exceeded
通常意味着应用程序在某处“泄漏”内存。您的堆内存使用率很高,例如 98/99%,而完整的 GC 可能会回收一两个百分点。它将做的是它将大部分时间花在 GCing 上。 JVM 检查它花费 GC 的频率,如果超过某个限制,就会抛出此错误。
要解决它,您需要检查发生泄漏的位置。通过获取堆转储来执行此操作。您可以为此使用 jmap。一旦你得到它,你应该看到堆的百分比可能主要属于一组对象
We tried JAVA_OPTS="-Xms4096m -Xmx8192m. Looks like we still get the error. Please suggest the possible options that we could try..
这太多了,只会推迟不可避免的事情。
如我所料,您的 OldGen 空间已达到 99%,几乎没有回收。 OldGen 空间是放置所有长生命周期对象的地方。由于您没有回收一些内存,所有这些对象最终都会被放入 OldGen 中,您将耗尽内存。
值得一读的是这里的两行:
ParOldGen total 2796224K, used 2796223K [0x0000000700000000, 0x00000007aaab0000, 0x00000007aaab0000) object space 2796224K, 99%
Full GC [PSYoungGen: 374720K->339611K(701120K)] [ParOldGen: 2796223K->2796222K(2796224K)] 3170943K->3135834K(3497344K)
正如我提到的,OldGen 占 99%,Full GC 仅回收 1KB YounGen 和 35KB OldGen。它将不得不几乎立即再次进行 GC。此时应该是 GCing GB。
获取堆转储并找出最大的罪魁祸首是什么。调查这些对象是在哪里创建的,以及为什么它们没有变得不可访问。
如果您对如何/在哪里或为什么有任何其他问题,请告诉我,但目前我无法告诉您其他任何信息。
关于java - Tomcat java.lang.OutOfMemoryError : GC overhead limit exceeded 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28051098/
我是一名计算机科学专业的学生,当谈到程序和排序时,我经常听到“开销”这个词。这到底是什么意思? 最佳答案 这是建立操作所需的资源。这看起来似乎无关,但却是必要的。 就像当你需要去某个地方时,你可能
很难说出这里问的是什么。这个问题是模棱两可的、含糊的、不完整的、过于宽泛或修辞的,不能以其目前的形式得到合理的回答。如需帮助澄清此问题以便可以重新打开,visit the help center .
我是一名计算机科学专业的学生,当谈到程序和排序时,我经常听到“开销”这个词。这到底是什么意思? 最佳答案 这是建立操作所需的资源。这看起来似乎无关,但却是必要的。 就像当你需要去某个地方时,你可能
我尝试阅读 stackoveflow 上回答的一些问题并根据此更改 eclipse.ini: 现在,除了一个应用程序之外,每个应用程序都可以正常运行。它显示此消息: 无法执行 dex:超出 GC 开销
我用谷歌搜索了这个问题,似乎找不到一致的意见,或者许多基于可靠数据的意见。我只是想知道在 SQL SELECT 语句中使用通配符是否会比单独调用每个项目产生额外的开销。我在几个不同的测试查询中比较了两
假设我们压缩例如 .txt 具有 的文件7 字节大小。压缩后转换为 .zip 文件,大小为 190 字节。 有没有办法估计或计算“开销”的大致大小? 什么因素影响开销大小? Zlib计算开销:他们说:
一段时间以来,我一直在尝试理解 Go 中的 channel 。但有一件事让我感到奇怪。当你打电话时究竟发生了什么, for { select { case <-chan: } } 它是
假设我正在运行N个线程。 每个线程都需要与下一个和上一个同步。 for (i = 0 ; i < NITER; i++){ do_something (); sync_
我需要使用 JDOM 生成 XML 文件,该文件可能相当大。我想知道除了内存中已经存在的数据(主要是字符串)之外,JDOM 还需要多少额外的内存空间。我写了一个简单的程序来测试,结果发现开销大约是XM
我正在学习类(class) 3354(在 .NET Framework 2.0 中实现系统类型和接口(interface))据说对于具有成员变量和函数的简单类,由于开销,最好使用结构而不是类. 我从来
我用 Google 搜索了这个问题,但似乎找不到一致的意见,也找不到许多基于可靠数据的意见。我只是想知道在 SQL SELECT 语句中使用通配符是否会比单独调用每个项目产生额外的开销。我在几个不同的
我正在考虑使用 Clyther用于高性能任务。仅使用 python 编写 OpenCL 内核是令人兴奋的,但我想知道性能差距。 Clyther 擅长的任务是什么?不擅长? Clyther 生成的内核好
我正在将一个项目从gradle版本3.3转换为4.10.1。该项目主要是使用自定义构建步骤构建的C++代码,而不是CMake(externalNativeBuild)或Android.mk(ndkBu
我正在检查一个将大量内容加载到 WebView 中的应用程序的能量分析。我收到以下仪表。我发现能源影响很大,并且开销始终很高(屏幕截图中为 54%)。 能量表的开销统计数据的含义是什么? 最佳答案 开
具体来说,我谈论的更多是 C++ 和 Rust。在 Java 和 C# 具有运行时的意义上,我不明白 C++ 如何具有“运行时”——而 Java 和 C# 运行在具有自身封装抽象等的虚拟机之上,I d
我有这个函数可以在 OpenGL 中打印二维文本 void Text2D::printText(const BMfont &font, const char *text, const PenList
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: C++ virtual function table memory cost 我刚读到:http://www
Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > java.lang.OutOfMemoryError
我正在构建一个动态搜索(每次击键都会更新):我目前的方案是在每次击键时向服务器发送一个新的 AJAX 请求并以 JSON 格式取回数据。 我考虑过为每个搜索“ session ”打开一个 WebSoc
我们正在为基于 Oracle 11gR1 的新系统设计数据库模式。我们已经确定了一个主模式,它有近 100 个表,这些表将从前端 Java 应用程序访问。 我们需要审计接近 50 个表中发生更改的值,
我是一名优秀的程序员,十分优秀!