2010-03-15 5 views
4

J'ai un CFC comme objet singletone dans la portée Application.Collecte des ordures à ColdFusion CFC

L'une des méthodes est utilisée pour le traitement de masse de données et provoque périodiquement les erreurs "Java heap space". Toutes les variables à l'intérieur de la méthode ont une portée VAR. Elles ne doivent donc pas être conservées dans la portée de l'objet lorsque l'invocation est terminée.

Il peut être un peu question stupide pour les gens Java, mais je voudrais savoir comment garbage collector Java nettoie les méthodes CFC mémoire: que lorsque la demande entière se termine, ou peut-être juste après chaque méthode/fonction invokation ?

La deuxième option est intéressante car elle peut me permettre de scinder ma grande méthode en quelques-unes, comme l'une des optimisations possibles. Java libère des ressources après qu'il n'y a aucune référence à l'objet

+0

Avez-vous essayé simplement d'augmenter la taille de segment disponible dans CF Administrator? –

+0

@Ben, ouais je l'ai fait à Resin conf (en utilisant Railo), mais avec la RAM VPS actuellement limitée, cela ne va pas aider beaucoup. Je veux juste essayer l'optimisation de code avant d'acheter plus de RAM, au moins j'ai besoin de savoir que je ne "nourris pas une bête" :) – Sergii

Répondre

2

Il est bien connu que coldfusion n'effectuera pas la récupération de place tant que la demande actuelle n'aura pas été traitée, même si vous essayez de l'appeler manuellement.

+0

Oh. C'est exactement ce à quoi je pensais, heureusement j'ai déjà une solution. Merci! – Sergii

1

Vous avez un objet de portée d'application singleton qui signifie réellement qu'il ne libérera jamais les variables d'instance et les variables de classe. Sauf que vous le ferez manuellement dans votre code. Vous devriez montrer du code pour obtenir plus de conseils sur l'optimisation de votre code.

+0

Merci, vous avez rappelé être sur une chose importand j'ai oublié de mentionner: portée locale pour les variables . Bien que je ne sache pas si je peux fournir des exemples de code utiles ici parce que ma question centrale concerne les choses de niveau supérieur. – Sergii

+0

Ensuite, nettoyez-les simplement en définissant des valeurs sur null lorsque vous êtes sûr qu'elles ne sont plus utiles. – Artic

Questions connexes