src/jdk.internal.vm.compiler.management/share/classes/org.graalvm.compiler.hotspot.management/src/org/graalvm/compiler/hotspot/management/JMXServiceProvider.java
branchstuefe-new-metaspace-branch
changeset 58645 28c7e6711871
parent 58494 54c1ba464b78
parent 58644 64597a6fd186
child 58646 bcdba1c9f1fe
equal deleted inserted replaced
58494:54c1ba464b78 58645:28c7e6711871
     1 /*
       
     2  * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.
       
     8  *
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  *
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  *
       
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20  * or visit www.oracle.com if you need additional information or have any
       
    21  * questions.
       
    22  */
       
    23 
       
    24 
       
    25 package org.graalvm.compiler.hotspot.management;
       
    26 
       
    27 import static java.lang.Thread.currentThread;
       
    28 
       
    29 import java.lang.management.ManagementFactory;
       
    30 import java.util.List;
       
    31 
       
    32 import org.graalvm.compiler.serviceprovider.ServiceProvider;
       
    33 import org.graalvm.compiler.serviceprovider.JMXService;
       
    34 
       
    35 import com.sun.management.ThreadMXBean;
       
    36 
       
    37 /**
       
    38  * Implementation of {@link JMXService} for JDK 13 and later.
       
    39  */
       
    40 @ServiceProvider(JMXService.class)
       
    41 public class JMXServiceProvider extends JMXService {
       
    42     private final ThreadMXBean threadMXBean = (ThreadMXBean) ManagementFactory.getThreadMXBean();
       
    43 
       
    44     @Override
       
    45     protected long getThreadAllocatedBytes(long id) {
       
    46         return threadMXBean.getThreadAllocatedBytes(id);
       
    47     }
       
    48 
       
    49     @Override
       
    50     protected long getCurrentThreadCpuTime() {
       
    51         long[] times = threadMXBean.getThreadCpuTime(new long[]{currentThread().getId()});
       
    52         return times[0];
       
    53     }
       
    54 
       
    55     @Override
       
    56     protected boolean isThreadAllocatedMemorySupported() {
       
    57         return threadMXBean.isThreadAllocatedMemorySupported();
       
    58     }
       
    59 
       
    60     @Override
       
    61     protected boolean isCurrentThreadCpuTimeSupported() {
       
    62         return threadMXBean.isThreadCpuTimeSupported();
       
    63     }
       
    64 
       
    65     @Override
       
    66     protected List<String> getInputArguments() {
       
    67         return ManagementFactory.getRuntimeMXBean().getInputArguments();
       
    68     }
       
    69 }