Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Support ManagementFactory.getPlatformMBeanServer
  • Loading branch information
christianwimmer committed Jun 8, 2020
1 parent f89843e commit 8d6a41b
Show file tree
Hide file tree
Showing 23 changed files with 1,671 additions and 1,017 deletions.
@@ -0,0 +1,105 @@
/*
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.oracle.svm.core.genscavenge;

//Checkstyle: stop
import java.lang.management.ManagementFactory;

import javax.management.MBeanNotificationInfo;
import javax.management.NotificationEmitter;
import javax.management.NotificationFilter;
import javax.management.NotificationListener;
import javax.management.ObjectName;

import org.graalvm.nativeimage.Platform;
import org.graalvm.nativeimage.Platforms;

import com.oracle.svm.core.util.TimeUtils;
import com.sun.management.GcInfo;

import sun.management.Util;
//Checkstyle: resume

public final class CompleteGarbageCollectorMXBean implements com.sun.management.GarbageCollectorMXBean, NotificationEmitter {

@Platforms(Platform.HOSTED_ONLY.class)
public CompleteGarbageCollectorMXBean() {
}

@Override
public long getCollectionCount() {
return HeapImpl.getHeapImpl().getGCImpl().getAccounting().getCompleteCollectionCount();
}

@Override
public long getCollectionTime() {
long nanos = HeapImpl.getHeapImpl().getGCImpl().getAccounting().getCompleteCollectionTotalNanos();
return TimeUtils.roundNanosToMillis(nanos);
}

@Override
public String[] getMemoryPoolNames() {
/* Return a new array each time because arrays are not immutable. */
return new String[]{"young generation space", "old generation space"};
}

@Override
public String getName() {
/* Changing this name will break assumptions we take in the object replacer. */
return "complete scavenger";
}

@Override
public boolean isValid() {
return true;
}

@Override
public ObjectName getObjectName() {
return Util.newObjectName(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE, getName());
}

@Override
public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) {
}

@Override
public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) {
}

@Override
public void removeNotificationListener(NotificationListener listener) {
}

@Override
public MBeanNotificationInfo[] getNotificationInfo() {
return new MBeanNotificationInfo[0];
}

@Override
public GcInfo getLastGcInfo() {
return null;
}
}
Expand Up @@ -29,9 +29,7 @@
import static com.oracle.svm.core.snippets.KnownIntrinsics.readCallerStackPointer;
import static com.oracle.svm.core.snippets.KnownIntrinsics.readReturnAddress;

import java.lang.management.GarbageCollectorMXBean;
import java.lang.ref.Reference;
import java.util.List;

import org.graalvm.compiler.api.replacements.Fold;
import org.graalvm.compiler.word.Word;
Expand Down Expand Up @@ -112,8 +110,6 @@ public final class GCImpl implements GC {
private final OutOfMemoryError oldGenerationSizeExceeded = new OutOfMemoryError("Garbage-collected heap size exceeded.");
private final NoAllocationVerifier noAllocationVerifier = NoAllocationVerifier.factory("GCImpl.GCImpl()", false);

private final GCManagementFactory managementFactory = new GCManagementFactory();

private CollectionPolicy policy;
private boolean completeCollection = false;
private UnsignedWord sizeBefore = WordFactory.zero();
Expand Down Expand Up @@ -1096,9 +1092,4 @@ private void printGCSummary() {
log.string(prefix).string("TotalNanos: ").signed(totalNanos).newline();
log.string(prefix).string("GCLoadPercent: ").signed(roundedGCLoad).newline();
}

@Override
public List<GarbageCollectorMXBean> getGarbageCollectorMXBeanList() {
return managementFactory.getGCBeanList();
}
}

This file was deleted.

0 comments on commit 8d6a41b

Please sign in to comment.