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