java - Java Direct 缓冲区内存错误的常见原因有哪些?

标签 java ruby-on-rails torquebox

我在 Torquebox 上运行着各种 Rails 应用程序。有时,Torquebox 会在短时间内(可能 2-5 分钟)停止响应请求,并且日志中会填满以下错误消息:

java.lang.OutOfMemoryError: Direct buffer memory

错误发生的时间是不可预测的(通常是几天之间)。负载测试不会重现该问题,而且该问题在峰值负载期间也不会发生。而且,与我过去见过的许多其他类型的内存错误不同,服务器实际上恢复并再次开始正常响应,而无需任何类型的重新启动或干预。

是否有任何常见的编码错误、错误配置或其他经常导致此错误的潜在问题? Google 揭示了各种库(例如 Netty)的许多较低级别的 Java/垃圾收集类型问题,但我有兴趣看看是否还有其他常见的地方可以查看。

最佳答案

JNA/ByteBuffer not getting freed and causing C heap to run out of memory表示如果 Java 堆不需要经常进行垃圾回收(也许在您的情况下是在非高峰时间),则可能不会清除直接内存。

如果您有一个使用直接内存的常量函数,无论负载如何,那么应用程序在较轻的负载时间内可能不会调用足够多的垃圾收集。使用 GC 模块可能会有所帮助 ( http://ruby-doc.org/core-2.0/GC.html )。

关于java - Java Direct 缓冲区内存错误的常见原因有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18664177/

相关文章:

java - assertionLock引起的内存泄漏 org.apache.catalina.loader.WebappClassLoader

java - 重置 TextView 滚动到顶部

java - Android 以编程方式接听电话

java - Spring AOP错误: java. lang.NoClassDefFoundError:org/springframework/cglib/core/SpringNamingPolicy

ruby-on-rails - 查询按关联表列排序的结果,仅限最近的关联

ruby-on-rails - 官方RoR教程"Template is missing"错误

ruby-on-rails - 如何给 ActiveAdmin 自己的应用程序布局? -- rails 新手

ruby-on-rails - 带有扭矩箱和 nginx 的 EC2 错误网关

deployment - 在现有的 JBoss (7.1.x) 中实现 Torquebox (2.3)

ruby-on-rails - jruby-openssl 中已经初始化的常量