Proposal:JdpController.getProcessId() VM compatibility improvement
Roger Riggs
Roger.Riggs at Oracle.com
Thu Jun 22 17:02:36 UTC 2017
HI,
This looks like:
JDK-8074569 <https://bugs.openjdk.java.net/browse/JDK-8074569> Update
implementation to use ProcessHandle.current() to get the PID
I'm happy to sponsor.
Roger
On 6/22/2017 12:27 PM, Andrew Leonard wrote:
> Thanks Alan,
> Yes, you're right the exception swallowing can be removed too.
> I'll re-post to serviceability-dev...
> Cheers
> 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
>
>
>
>
> From: Alan Bateman <Alan.Bateman at oracle.com>
> To: Andrew Leonard <andrew_m_leonard at uk.ibm.com>,
> core-libs-dev at openjdk.java.net
> Date: 22/06/2017 17:21
> Subject: Re: Proposal:JdpController.getProcessId() VM compatibility
> improvement
>
>
>
>
> 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
>
>
>
>
> 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