[ https://issues.apache.org/jira/browse/LUCENE-5086?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13700522#comment-13700522 ]
ASF subversion and git services commented on LUCENE-5086: --------------------------------------------------------- Commit 1499935 from [~thetaphi] [ https://svn.apache.org/r1499935 ] LUCENE-5086: RamUsageEstimator now uses official Java 7 API or a proprietary Oracle Java 6 API to get Hotspot MX bean, preventing AWT classes to be loaded on MacOSX > RamUsageEstimator causes AWT classes to be loaded by calling > ManagementFactory#getPlatformMBeanServer > ----------------------------------------------------------------------------------------------------- > > Key: LUCENE-5086 > URL: https://issues.apache.org/jira/browse/LUCENE-5086 > Project: Lucene - Core > Issue Type: Improvement > Reporter: Shay Banon > Assignee: Uwe Schindler > Attachments: LUCENE-5086-branch4x.patch, LUCENE-5086-branch4x.patch, > LUCENE-5086.patch, LUCENE-5086-trunk.patch, LUCENE-5086-trunk.patch > > > Yea, that type of day and that type of title :). > Since the last update of Java 6 on OS X, I started to see an annoying icon > pop up at the doc whenever running elasticsearch. By default, all of our > scripts add headless AWT flag so people will probably not encounter it, but, > it was strange that I saw it when before I didn't. > I started to dig around, and saw that when RamUsageEstimator was being > loaded, it was causing AWT classes to be loaded. Further investigation showed > that actually for some reason, calling > ManagementFactory#getPlatformMBeanServer now with the new Java version causes > AWT classes to be loaded (at least on the mac, haven't tested on other > platforms yet). > There are several ways to try and solve it, for example, by identifying the > bug in the JVM itself, but I think that there should be a fix for it in > Lucene itself, specifically since there is no need to call > #getPlatformMBeanServer to get the hotspot diagnostics one (its a heavy > call...). > Here is a simple call that will allow to get the hotspot mxbean without using > the #getPlatformMBeanServer method, and not causing it to be loaded and > loading all those nasty AWT classes: > {code} > Object getHotSpotMXBean() { > try { > // Java 6 > Class sunMF = Class.forName("sun.management.ManagementFactory"); > return sunMF.getMethod("getDiagnosticMXBean").invoke(null); > } catch (Throwable t) { > // ignore > } > // potentially Java 7 > try { > return ManagementFactory.class.getMethod("getPlatformMXBean", > Class.class).invoke(null, > Class.forName("com.sun.management.HotSpotDiagnosticMXBean")); > } catch (Throwable t) { > // ignore > } > return null; > } > {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org