J'ai des problèmes avec le tas de ColdFusion. Voici un petit exemple d'application que j'expérimente. J'ai pensé après cfinvoke
appelant la méthode init
qu'il détruit toutes les variables locales au composant. Mais apparemment ce n'est pas le cas. L'application fonctionne comme ci-dessous mais si j'ajoute un zéro à la boucle dans index.cfm
elle casse. Qu'est-ce qui est stocké dans le tas pour provoquer cela? Y a-t-il un moyen de contourner ceci?CFINVOKE vs java.lang.OutOfMemoryError dans ColdFusion
index.cfm:
<cfloop from="1" to="1000" index="i">
<cfinvoke component="test" method="init" returnvariable="x">
</cfloop>
<cfoutput><p>#x#</p></cfoutput>
test.cfc:
<cfcomponent output="false">
<cffunction name="init" returntype="string">
<cfset var test = structNew()>
<cfloop from="1" to="1000" index="i">
<cfset test[i] = i>
</cfloop>
<cfreturn Now()>
</cffunction>
</cfcomponent>
Et voici le message d'erreur:
SEVERE: Servlet.service() for servlet CfmServlet threw exception
javax.servlet.ServletException: ROOT CAUSE:
java.lang.OutOfMemoryError: Java heap space`
Toute aide être apprécié.
vous devez ajouter la version de ColdFusion vous êtes en cours d'exécution afin que ce soit des informations pertinentes dans le futur. –