2015-10-07 9 views
16

Ich habe ein Problem auf ein paar Servern mit dem GC-Protokoll. Es ist mit dieser gefüllt:Java GC Protokoll ist voll von seltsamen Zeichen

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ 
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ 
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ 

Bemerkt dies geschieht auf Servern mit einem großen Speicher der JVM gegeben: -Xms32G -Xmx48G. Dies könnte zwar ein Ablenkungsmanöver sein, aber ich denke es zu erwähnen.

Da dies Apps mit geringer Latenz/hohem Durchsatz sind, ist die Analyse des Logs von entscheidender Bedeutung. Aber stattdessen ist es voll von diesen Charakteren oben.

Wir verwenden Java 8:

java version "1.8.0_40" 
Java(TM) SE Runtime Environment (build 1.8.0_40-b26) 
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode) 

Wir dies das Protokoll erstellen verwenden:

-verbose:gc 
-Xloggc:/path/to/gc.log 
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 

Wer vor diesem Problem gesehen? Was könnte es verursachen?

+0

Wie haben Sie das GC Log erstellt? Benutzt du das 'verbose: gc' Flag oder einen anderen Weg? –

+0

@kucing_terbang: Ja, ich habe die Frage mit der Info aktualisiert – bdem

+3

'^ @' ist die Unix/Linux-Notation für Ctrl- @, ASCII 0. In der Regel Null-Speicher, wie es oft in Java passiert. –

Antwort

1

Wenn der zu speichernde Text mit UTF-16 codiert ist, kann ein "^ @" in eine normale Textdatei eingefügt werden. Ich hatte dieses Problem, einige verschlüsselte Dateien in UNIX-Systemen zuvor zu öffnen.