2010-08-03 12 views

Répondre

1

Odeurs. Bien que Java effectue la collecte des ordures, vous devez vous assurer de ne pas conserver (référence forte) les objets dont vous n'avez plus besoin. Par exemple, si vous ne désinscrivez pas les gestionnaires d'événements (et que le code standard du gestionnaire d'événements contient de fortes références aux gestionnaires), ces gestionnaires ne seront jamais collectés et, par conséquent, la fuite de mémoire.

Sans en savoir plus sur votre programme, nous pouvons juste deviner ici.

0

Vous pouvez tout simplement besoin d'augmenter votre taille maximale du tas en utilisant l'option -Xmx.

Vous pouvez lire cette fuite de mémoire tuning guide

0

Fuite de mémoire. Utilisez jvisualvm dans le jdk pour savoir pourquoi.

0

Cela peut être l'une de plusieurs choses.

  • Vous pouvez avoir une fuite de mémoire. Dans un environnement de collecte de déchets, cela signifie que vous gardez en mémoire que vous n'avez plus besoin. L'utilisation d'un profileur (Yourkit ou autre) pour effectuer le profilage de la mémoire vous aidera à déterminer à quoi vous tenez et comment.
  • Selon votre version de jvm, l'allocation de tas par défaut peut ne pas être très importante. Il est possible, mais pas probable pour une application rmi, que vous êtes légitimement à court de mémoire. Utilisez le commutateur -Xms pour augmenter la taille initiale du tas et -Xmx pour limiter la taille maximale du tas. par exemple.
    java -Xms128m -Xmx512m ...