гуглеры, если у вас есть дамп кучи с корнем coldfusion.runtime.CFDummyComponent
, читайте дальше.
Марк Эшер из MXUnit fame обнаружил ту же ошибку в другом контексте . Его решение включает в себя большой цикл по запросу, решаемый путем перехода от query = "name"
к from = "1" to = "# name.recordcount #" index = "row"
. Другой подход, который работает, - это использование
внутри цикла как такового:
Это очень эффективно, когда вы сталкиваетесь с ситуациями, когда вам нужно делать что-то внутри цикла, например, запросы и
внутри
, чтобы потреблялась только память для этой итерации.
Надеюсь, что кто-то другой подтвердит или скажет мне, что я делаю неправильно. Я могу постоянно воспроизводить запущенный OOM, вызывая файл oom.cfm (показанный ниже). Используя jconsole, я могу видеть, что запрос потребляет память и никогда не освобождает ее до завершения. Проблема, по-видимому, связана с вызовом
внутри
, где, если я закомментирую вызов
, все будет собрано мусором, пока запрос это работает.
Версия ColdFusion : 9,0,1, 274733
Аргументы JVM
java.home=C:/Program Files/Java/jdk1.6.0_18
java.args=-server -Xms768m -Xmx768m -Dsun.io.useCanonCaches=false -XX:MaxPermSize=512m -XX:+UseParallelGC -Xbatch -Dcoldfusion.rootDir={application.home}/ -Djava.security.policy={application.home}/servers/41ep8/cfusion.ear/cfusion.war/WEB-INF/cfusion/lib/coldfusion.policy -Djava.security.auth.policy={application.home}/servers/41ep8/cfusion.ear/cfusion.war/WEB-INF/cfusion/lib/neo_jaas.policy -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=56033
oom.cfm (здесь вызывается template.cfm ниже - Ошибка Adobe № 85736 )
template.cfm
Обновление № 2 ( cfthread case от Elliott Sprehn - Adobe ColdFusion Bug # 83359 )