You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2013/07/05 10:28:55 UTC
svn commit: r1499935 - in /lucene/dev/trunk/lucene: CHANGES.txt
core/src/java/org/apache/lucene/util/RamUsageEstimator.java
Author: uschindler
Date: Fri Jul 5 08:28:55 2013
New Revision: 1499935
URL: http://svn.apache.org/r1499935
Log:
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
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/RamUsageEstimator.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1499935&r1=1499934&r2=1499935&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Fri Jul 5 08:28:55 2013
@@ -226,6 +226,10 @@ Optimizations
* LUCENE-5050: Close the stored fields and term vectors index files as soon as
the index has been loaded into memory to save file descriptors. (Adrien Grand)
+* 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. (Shay Banon, Dawid Weiss, Uwe Schindler)
+
New Features
* LUCENE-5085: MorfologikFilter will no longer stem words marked as keywords
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/RamUsageEstimator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/RamUsageEstimator.java?rev=1499935&r1=1499934&r2=1499935&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/RamUsageEstimator.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/RamUsageEstimator.java Fri Jul 5 08:28:55 2013
@@ -18,6 +18,7 @@ package org.apache.lucene.util;
*/
import java.lang.management.ManagementFactory;
+import java.lang.management.PlatformManagedObject;
import java.lang.reflect.*;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
@@ -212,18 +213,17 @@ public final class RamUsageEstimator {
// regardless of the architecture).
int objectAlignment = 8;
try {
- final Class<?> beanClazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean");
- final Object hotSpotBean = ManagementFactory.newPlatformMXBeanProxy(
- ManagementFactory.getPlatformMBeanServer(),
- "com.sun.management:type=HotSpotDiagnostic",
- beanClazz
- );
- final Method getVMOptionMethod = beanClazz.getMethod("getVMOption", String.class);
- final Object vmOption = getVMOptionMethod.invoke(hotSpotBean, "ObjectAlignmentInBytes");
- objectAlignment = Integer.parseInt(
- vmOption.getClass().getMethod("getValue").invoke(vmOption).toString()
- );
- supportedFeatures.add(JvmFeature.OBJECT_ALIGNMENT);
+ final Class<? extends PlatformManagedObject> beanClazz =
+ Class.forName("com.sun.management.HotSpotDiagnosticMXBean").asSubclass(PlatformManagedObject.class);
+ final Object hotSpotBean = ManagementFactory.getPlatformMXBean(beanClazz);
+ if (hotSpotBean != null) {
+ final Method getVMOptionMethod = beanClazz.getMethod("getVMOption", String.class);
+ final Object vmOption = getVMOptionMethod.invoke(hotSpotBean, "ObjectAlignmentInBytes");
+ objectAlignment = Integer.parseInt(
+ vmOption.getClass().getMethod("getValue").invoke(vmOption).toString()
+ );
+ supportedFeatures.add(JvmFeature.OBJECT_ALIGNMENT);
+ }
} catch (Exception e) {
// Ignore.
}