jmap -histo:live pid | grep -i node
1: 1000000 24000000 java.util.LinkedList$Node (java.base@17.0.1)
jmap -histo:live pid | grep -i string
5: 1645 39480 java.lang.String (java.base@17.0.1)
One million nodes are being allocated. Only few Strings are allocated (It should be just 1, but the JVM plays here too)
jmap -histo:live pid | grep -i node
2: 1000000 24000000 java.util.LinkedList$Node (java.base@17.0.1)
jmap -histo:live pid | grep -i string
1: 1001662 24039888 java.lang.String (java.base@17.0.1)
49: 9 280 [Ljava.lang.String; (java.base@17.0.1)
One million nodes are being allocated.
One million String objects are being allocated.
Your JVM may be runningn with -XX:+UseStringDeduplication
, so underneath char[]
will be reused.