-
Bug
-
Resolution: Duplicate
-
P3
-
6u18
-
None
-
generic
-
generic
Current implementation of java.util.jar.Pack200.Packer (com.sun.java.util.jar.pack.*) contains memory leak.
Heap dump shows that a number of ConstantPool.$*Entry entries are not GCed.
Looking through the sources it is clear that a number of HashMaps, defined in ConstantPool (utf8Entries, classEntries, literalEntries, signatureEntries, etc) are never cleaned explicitely nor by GC after .pack() method been invoked. Subsequent usage of Packer for a large number of different jars result in PermGen gets exhausted. Using Pack200.newPacker() for each jar does not have any effect in comparison to using one instance of packer for all.
Workaround: run pack200 as the external process (${java.home}/bin/pack200).
Heap dump shows that a number of ConstantPool.$*Entry entries are not GCed.
Looking through the sources it is clear that a number of HashMaps, defined in ConstantPool (utf8Entries, classEntries, literalEntries, signatureEntries, etc) are never cleaned explicitely nor by GC after .pack() method been invoked. Subsequent usage of Packer for a large number of different jars result in PermGen gets exhausted. Using Pack200.newPacker() for each jar does not have any effect in comparison to using one instance of packer for all.
Workaround: run pack200 as the external process (${java.home}/bin/pack200).
- duplicates
-
JDK-6888127 java.util.jar.Pack200.Packer Memory Leak
-
- Closed
-
- relates to
-
JDK-6531345 Memory leak in unpack200
-
- Closed
-