[
https://issues.apache.org/jira/browse/COMPRESS-473?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16702371#comment-16702371
]
Stefan Bodewig commented on COMPRESS-473:
-----------------------------------------
In a way we implement {{Inflater}} ourselves in pure Java in the deflate64
package and it is orders of magnitude slower than the zlib based one. In this
case the cure is probably worse than the illness.
Replacing them {{Deflater}}/{{Inflater}} is non-trivial and likely platform
dependent.
As long as there is no native replacement for {{Deflater}}/{{Inflater}} we
can't replace {{Gzip*stream}} classes either as any replacement would still
need {{Deflater}}/{{Inflater}}. We don't use
{{ZipOutputStream}}/{{ZipInputStream}} at all.
> Avoiding Java native peer objects that override finalize()
> ----------------------------------------------------------
>
> Key: COMPRESS-473
> URL: https://issues.apache.org/jira/browse/COMPRESS-473
> Project: Commons Compress
> Issue Type: Improvement
> Reporter: Roman Leventov
> Priority: Major
>
> Objects that override finalize() are very bad for GC. The infrastructure
> library such as Commons Compress is probably the right place to do the hard
> work of eliminating dependencies on such objects. Instead, PhantomReference
> registered in a Queue, or sun.misc.Cleaner (or java.lang.ref.Cleaner) should
> be used.
> In particular:
> java.util.zip.Deflater/Inflater/ZipOutputStream/ZipInputStream/GZipOutputStream/GZipInputStream
> should not be used.
>
> The issue for Zstd created in a downstream library:
> [https://github.com/luben/zstd-jni/issues/83]
>
> Some other downstream dependencies could be affected too.
>
> Commons Compress's own ZipFile and BZip2CompressorOutputStream classes should
> not override finalize() too.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)