2010-01-24 3 views
1

En cours d'exécution sur Solaris 10, j'ai des problèmes lorsque j'appuie sur une instruction LOG.debug à l'aide d'un enregistreur Apache Log4j. Le scénario de base est démontré dans le bloc de code suivant:Log4j Longueur de chaîne maximale OU Erreur de concaténation de chaîne Java?

public class MyClass { 
    private static final Logger LOG = Logger.getLogger(MyClass.class.getName()); 
    private LinkedHashMap<String, String> myMap = 
     new LinkedHashMap<String, String>(); 

    public static void main(String[] args) { 

     // A really long String, but certainly not exceeding 2^31 - 1 characters 
     //long 
     String reallyLongString = "A really, really, really...long String"; 
     String key = "keyToReallyLongString"; 

     // When this line is executed, Solaris instantly and completely logs me off 
     // of the system 
     LOG.debug("Adding to myMap[" + key + "]: " + reallyLongString); 
    } 
} 

Toute pensée?

+1

J'ai du mal à croire que vous êtes déconnecté. Le processus s'écrase, bien sûr, mais déconnecté? Vous allez devoir fournir un cas de test défaillant réel au lieu d'un scénario de base ... –

+0

Malheureusement, je ne pouvais pas le dupliquer dans une application de test et je ne peux pas afficher le code réel. Nous voyons parfois ce comportement dans d'autres contextes, mais c'était la seule fois où cela était cohérent. Bizarre, vraiment ... Je ne sais pas si ça vaut le coup de passer plus de temps. Cette ligne de sortie de débogage ne vaut pas autant de temps ... – Adam

Répondre

1

Si vous avez des limites de processus, il se peut que vous les rencontriez. En faisant cette concaténation de chaîne, vous utiliserez au moins(reallyLongString.length() + key.length()) * 2 octets. Si cela vous suffit pour dépasser vos limites ...

+0

Bien que je ne pense toujours pas que la longueur de la chaîne est un problème (compte tenu du calcul que vous avez donné, ce serait environ 27 000 caractères), je pense que vous êtes sur quelque chose. Une enquête plus approfondie, je semble seulement être en mesure de reproduire ce problème lors de l'exécution à partir de l'IDE Eclipse. Y a-t-il un paramètre de mémoire particulier que vous recommandez d'examiner? Ou y a-t-il un paramètre spécifique aux applications Eclipse Rich Client Platform dont je ne suis pas conscient? – Adam

+0

@Adam: Je ne crains pas ... Je n'ai jamais vraiment vu ce problème et je jetais juste des idées pour voir si cela pouvait aider. –

Questions connexes