У меня есть приложение JRuby on Rails, которое работает внутри Tomcat (Warble). Он использует мост Java для подключения к серверу приложений Progress (OpenEdge) ... Когда я отслеживаю память, она только увеличивается.
- Томкэт 7.0
- JRuby 1.6.7.2 (Ruby-1.9.2-p312)
- JVM 1.7.0.25
- Рельсы 3.2.7
- jruby-стойка 1.1.7
- славка 1.3.6
Какой лучший способ добраться до сути проблемы здесь? Я предполагаю, что это могут быть либо объекты JRuby, которые не очищены, либо что-то в Java-мосте или сборщике мусора, который не выполняет свою работу...
Даже если я позволю процессу работать в течение получаса, память не снижается ...
- Есть ли способ узнать, какие Объекты живы?
- Существуют ли простые в использовании бесплатные инструменты, с помощью которых я могу получить больше информации о том, кто использует всю память?
Между прочим, я уже настроил сервер Tomcat на использование большего количества памяти, но это просто задерживает ошибку пространства в куче...
РЕДАКТИРОВАТЬ: На самом деле я вижу, что Tomcat просто использует всю память, которую он может максимально использовать (максимальный пул памяти). И никогда не выпускает. Может быть, это просто нормальное поведение ... Например, я установил максимум на 256 МБ, а в диспетчере задач память остается около 256 МБ.
РЕДАКТИРОВАТЬ:
Когда я создаю дамп кучи и позволяю eclipse анализировать его с помощью анализатора памяти Eclipse, это отчет, который я получаю. Я думаю, что это нормально, поскольку инструмент, вероятно, не ожидает всей истории JRuby...
Подозрение на проблему 1
6.458 экземпляров «org.jruby.RubyClass», загруженных «org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988», занимают 56.969.616 (31,78%) байт.
Ключевые слова org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988 org.jruby.RubyClass
Подозреваемый в проблеме 2
10 597 экземпляров «org.jruby.internal.runtime.methods.DefaultMethod», загруженных «org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988», занимают 22 182 112 (12,37%) байт.
Ключевые слова org.jruby.internal.runtime.methods.DefaultMethod org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988
Подозрение на проблему 3
3.144 экземпляра "org.jruby.RubyModule", загруженные "org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988", занимают 21.226.816 (11,84%) байт.
Ключевые слова org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988 org.jruby.RubyModule
Подозреваемый в проблеме 4
8.888 экземпляров «org.jruby.MetaClass», загруженных «org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988», занимают 18.563.784 (10,35%) байт.
Ключевые слова org.jruby.MetaClass org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988