22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package com.sun.management.internal;
26
27 import com.sun.management.DiagnosticCommandMBean;
28 import com.sun.management.HotSpotDiagnosticMXBean;
29 import com.sun.management.ThreadMXBean;
30 import java.lang.management.ManagementFactory;
31 import java.lang.management.MemoryManagerMXBean;
32 import java.lang.management.OperatingSystemMXBean;
33 import java.util.ArrayList;
34 import java.util.Collections;
35 import java.util.HashMap;
36 import java.util.List;
37 import java.util.Map;
38 import java.util.Set;
39 import java.util.stream.Collectors;
40 import java.util.stream.Stream;
41 import javax.management.DynamicMBean;
42 import jdk.management.VirtualThreadSchedulerMXBean;
43 import sun.management.ManagementFactoryHelper;
44 import sun.management.spi.PlatformMBeanProvider;
45
46 @SuppressWarnings({"removal", "restricted"})
47 public final class PlatformMBeanProviderImpl extends PlatformMBeanProvider {
48 static final String DIAGNOSTIC_COMMAND_MBEAN_NAME =
49 "com.sun.management:type=DiagnosticCommand";
50
51 private final List<PlatformComponent<?>> mxbeanList;
52 private static HotSpotDiagnostic hsDiagMBean = null;
53 private static OperatingSystemMXBean osMBean = null;
54
55 static {
56 System.loadLibrary("management_ext");
57 }
58
59 public PlatformMBeanProviderImpl() {
60 mxbeanList = Collections.unmodifiableList(init());
61 }
145
146 @Override
147 public String getObjectNamePattern() {
148 return ManagementFactory.THREAD_MXBEAN_NAME;
149 }
150
151 @Override
152 public synchronized Map<String, java.lang.management.ThreadMXBean> nameToMBeanMap() {
153 if (threadMBean == null) {
154 threadMBean = new HotSpotThreadImpl(ManagementFactoryHelper.getVMManagement());
155 }
156 return Collections.singletonMap(
157 ManagementFactory.THREAD_MXBEAN_NAME,
158 threadMBean);
159 }
160 });
161
162 /**
163 * VirtualThreadSchedulerMXBean.
164 */
165 initMBeanList.add(new PlatformComponent<VirtualThreadSchedulerMXBean>() {
166 private final Set<Class<? extends VirtualThreadSchedulerMXBean>> mbeanInterfaces =
167 Set.of(VirtualThreadSchedulerMXBean.class);
168 private final Set<String> mbeanInterfaceNames =
169 Set.of(VirtualThreadSchedulerMXBean.class.getName());
170 private VirtualThreadSchedulerMXBean impl;
171
172 @Override
173 public Set<Class<? extends VirtualThreadSchedulerMXBean>> mbeanInterfaces() {
174 return mbeanInterfaces;
175 }
176
177 @Override
178 public Set<String> mbeanInterfaceNames() {
179 return mbeanInterfaceNames;
180 }
181
182 @Override
183 public String getObjectNamePattern() {
184 return "jdk.management:type=VirtualThreadScheduler";
185 }
186
187 @Override
188 public Map<String, VirtualThreadSchedulerMXBean> nameToMBeanMap() {
189 VirtualThreadSchedulerMXBean impl = this.impl;
190 if (impl == null) {
191 this.impl = impl = VirtualThreadSchedulerImpls.create();
192 }
193 return Map.of("jdk.management:type=VirtualThreadScheduler", impl);
194 }
195 });
196
197 /**
198 * OperatingSystemMXBean
199 */
200 initMBeanList.add(new PlatformComponent<OperatingSystemMXBean>() {
201 private final Set<String> operatingSystemMXBeanInterfaceNames
202 = Collections.unmodifiableSet(
203 Stream.of("java.lang.management.OperatingSystemMXBean",
204 "com.sun.management.OperatingSystemMXBean",
205 "com.sun.management.UnixOperatingSystemMXBean")
206 .collect(Collectors.toSet()));
207
208 @Override
209 public Set<Class<? extends OperatingSystemMXBean>> mbeanInterfaces() {
210 return Stream.of(java.lang.management.OperatingSystemMXBean.class,
211 com.sun.management.OperatingSystemMXBean.class,
212 com.sun.management.UnixOperatingSystemMXBean.class)
213 .collect(Collectors.toSet());
214 }
215
|
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package com.sun.management.internal;
26
27 import com.sun.management.DiagnosticCommandMBean;
28 import com.sun.management.HotSpotDiagnosticMXBean;
29 import com.sun.management.ThreadMXBean;
30 import java.lang.management.ManagementFactory;
31 import java.lang.management.MemoryManagerMXBean;
32 import java.lang.management.OperatingSystemMXBean;
33 import java.util.ArrayList;
34 import java.util.Collections;
35 import java.util.HashMap;
36 import java.util.List;
37 import java.util.Map;
38 import java.util.Set;
39 import java.util.stream.Collectors;
40 import java.util.stream.Stream;
41 import javax.management.DynamicMBean;
42 import jdk.internal.access.SharedSecrets;
43 import jdk.management.VirtualThreadSchedulerMXBean;
44 import sun.management.ManagementFactoryHelper;
45 import sun.management.spi.PlatformMBeanProvider;
46
47 @SuppressWarnings({"removal", "restricted"})
48 public final class PlatformMBeanProviderImpl extends PlatformMBeanProvider {
49 static final String DIAGNOSTIC_COMMAND_MBEAN_NAME =
50 "com.sun.management:type=DiagnosticCommand";
51
52 private final List<PlatformComponent<?>> mxbeanList;
53 private static HotSpotDiagnostic hsDiagMBean = null;
54 private static OperatingSystemMXBean osMBean = null;
55
56 static {
57 System.loadLibrary("management_ext");
58 }
59
60 public PlatformMBeanProviderImpl() {
61 mxbeanList = Collections.unmodifiableList(init());
62 }
146
147 @Override
148 public String getObjectNamePattern() {
149 return ManagementFactory.THREAD_MXBEAN_NAME;
150 }
151
152 @Override
153 public synchronized Map<String, java.lang.management.ThreadMXBean> nameToMBeanMap() {
154 if (threadMBean == null) {
155 threadMBean = new HotSpotThreadImpl(ManagementFactoryHelper.getVMManagement());
156 }
157 return Collections.singletonMap(
158 ManagementFactory.THREAD_MXBEAN_NAME,
159 threadMBean);
160 }
161 });
162
163 /**
164 * VirtualThreadSchedulerMXBean.
165 */
166 if (!SharedSecrets.getJavaLangAccess().isCustomDefaultVirtualThreadScheduler()) {
167 initMBeanList.add(new PlatformComponent<VirtualThreadSchedulerMXBean>() {
168 private final Set<Class<? extends VirtualThreadSchedulerMXBean>> mbeanInterfaces =
169 Set.of(VirtualThreadSchedulerMXBean.class);
170 private final Set<String> mbeanInterfaceNames =
171 Set.of(VirtualThreadSchedulerMXBean.class.getName());
172 private VirtualThreadSchedulerMXBean impl;
173
174 @Override
175 public Set<Class<? extends VirtualThreadSchedulerMXBean>> mbeanInterfaces() {
176 return mbeanInterfaces;
177 }
178
179 @Override
180 public Set<String> mbeanInterfaceNames() {
181 return mbeanInterfaceNames;
182 }
183
184 @Override
185 public String getObjectNamePattern() {
186 return "jdk.management:type=VirtualThreadScheduler";
187 }
188
189 @Override
190 public Map<String, VirtualThreadSchedulerMXBean> nameToMBeanMap() {
191 VirtualThreadSchedulerMXBean impl = this.impl;
192 if (impl == null) {
193 this.impl = impl = VirtualThreadSchedulerImpls.create();
194 }
195 return Map.of("jdk.management:type=VirtualThreadScheduler", impl);
196 }
197 });
198 }
199
200 /**
201 * OperatingSystemMXBean
202 */
203 initMBeanList.add(new PlatformComponent<OperatingSystemMXBean>() {
204 private final Set<String> operatingSystemMXBeanInterfaceNames
205 = Collections.unmodifiableSet(
206 Stream.of("java.lang.management.OperatingSystemMXBean",
207 "com.sun.management.OperatingSystemMXBean",
208 "com.sun.management.UnixOperatingSystemMXBean")
209 .collect(Collectors.toSet()));
210
211 @Override
212 public Set<Class<? extends OperatingSystemMXBean>> mbeanInterfaces() {
213 return Stream.of(java.lang.management.OperatingSystemMXBean.class,
214 com.sun.management.OperatingSystemMXBean.class,
215 com.sun.management.UnixOperatingSystemMXBean.class)
216 .collect(Collectors.toSet());
217 }
218
|