Proposal:JdpController.getProcessId() VM compatibility improvement
Alan Bateman
Alan.Bateman at oracle.com
Thu Jun 22 16:20:57 UTC 2017
This seems a good clean-up, esp. as java.management doesn't open
sun.management to jdk.management.agent so I'll bet this wasn't working
any. I assume the exception swallowing can be removed too.
Can you bring this to serviceability-dev as this is where this code is
maintained?
On 22/06/2017 14:34, Andrew Leonard wrote:
> Hello,
> I would like to propose the change below to the
> JdpController.getProcessId() method which currently uses a reflection hack
> and the VMManagement interface. Instead for JDK9+ we can use the
> ProcessHandle.current().getPid() method, which will also allow better
> compatibility with other pluggable VMs.
>
> jdk/src/jdk.management.agent/share/classes/sun/management/jdp/JdpController.java
> 36d35
> < import sun.management.VMManagement;
> 137,146c136,137
> < // Get the current process id using a reflection hack
> < RuntimeMXBean runtime =
> ManagementFactory.getRuntimeMXBean();
> < Field jvm = runtime.getClass().getDeclaredField("jvm");
> < jvm.setAccessible(true);
> <
> < VMManagement mgmt = (sun.management.VMManagement)
> jvm.get(runtime);
> < Method pid_method =
> mgmt.getClass().getDeclaredMethod("getProcessId");
> < pid_method.setAccessible(true);
> < Integer pid = (Integer) pid_method.invoke(mgmt);
> < return pid;
> ---
>> // Get the current process id
>> return (int)ProcessHandle.current().getPid();
> I'd appreciate any feedback please, and how I would go about obtaining a
> sponsor and contributor?
>
> Thanks
> Andrew
>
> Andrew Leonard
> Java Runtimes Development
> IBM Hursley
> IBM United Kingdom Ltd
> Phone internal: 245913, external: 01962 815913
> internet email: andrew_m_leonard at uk.ibm.com
>
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
More information about the core-libs-dev
mailing list