[
https://issues.apache.org/jira/browse/DAEMON-333?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14571269#comment-14571269
]
Manuel Dominguez Sarmiento commented on DAEMON-333:
---------------------------------------------------
The attached thread dump (taken while the JVM was stuck on shutdown) shows that
we only have daemon threads, and the only non-daemon, RUNNABLE threads are the
Commons Loader main() and many, many GC-related threads
> Stop abusing System.gc() on Commons Daemon jsvc shutdown
> --------------------------------------------------------
>
> Key: DAEMON-333
> URL: https://issues.apache.org/jira/browse/DAEMON-333
> Project: Commons Daemon
> Issue Type: Bug
> Components: Jsvc
> Affects Versions: 1.0.15
> Reporter: Manuel Dominguez Sarmiento
>
> The shutdown sequence invokes System.gc() several times. I'm not sure why
> this would be necessary, especially considering that System.gc() is only a
> hint and the JVM will not necessarily do anything when this method is
> invoked. Especially if -XX:+DisableExplicitGC is used, which is fairly common
> practice in production environments.
> In our case, we use rather huge heaps (over 100 GB) so shutdown can take
> forever, depending on how much uncollected garbage there is in the JVM heap.
> We've always used -XX:+DisableExplicitGC so this was never apparent, however
> we decided to stop using -XX:+DisableExplicitGC after careful code review
> showed none of our apps or supporting libraries are using System.gc() and
> sometimes we want to trigger GC manually from monitoring tools (Jconsole,
> VisualVM, etc.) - but we found the hard way that Commons Daemon / jsvc is
> using System.gc() on shutdown, preventing the speedy shutdown we were used to.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)