Kelly O'Hair's Weblog (blogs.sun.com)

pageicon Wednesday Dec 31, 2008

Where has JVMPI gone?

Have you seen this error before?


FATAL ERROR: JVMPI, an experimental interface, is no longer supported.
Please use the supported interface: the JVM Tool Interface (JVM TI).
For information on temporary workarounds contact: jvmpi_eol@sun.com

For a long time now, since we released JDK 1.5, we have been warning people that the VM profiling interface JVMPI is going away. Starting with the JDK 6 update 3 release (JDK6u3), it is gone for good.

If you really need JVMPI, your best bet is to use a JDK 1.5 or older release, and also find out about transitioning to JVM TI. More often than not, you have become dependent on a tool that uses JVMPI, in which case you should try and upgrade that tool to a version that uses JVM TI instead. But if you have written your own JVMPI code, see the JVMPI transition article at http://java.sun.com/developer/technicalArticles/Programming/jvmpitransition/ for help in transitioning to JVM TI.

NOTE: Getting this message indicates that JVMPI has been requested of the JVM. A request for JVMPI must be made prior to JVM initialization and regardless of whether JVMPI is eventually used at runtime, just the request for it will have a negative performance impact on your Java application. In most situations, JVMPI should never be requested unless some kind of performance work is being done and slower performance is considered acceptable. JVM TI does not have many of the JVMPI limitations.

A few references of interest:

-kto

Comments:

How can we track what is happening in JDK6u3 ?
jdk6.dev.java.net shows no activity since the release of Java 6u2.

Posted by swpalmer on August 17, 2007 at 08:22 AM PDT #

We need the VM profiling interface (JVMPI) and we cannot go back earlier to JDK 6 - what are supposed to do?

Posted by Sammy on September 10, 2007 at 03:35 AM PDT #

This is not affecting me personally, but it seems really weird to remove this in a u release instead of on a major upgrade like Java 7.

Posted by Alex Miller on January 01, 2009 at 08:54 PM PST #

The JVMPI functionality was never an official interface, it was always considered experimental, and there is no official EOL policy on experimental interfaces. But we knew this interface was widely used, so we tried to make sure everyone was aware of the eventual removal. Yes this was a little weird, but so is JVMPI.

We provided both JVMPI and JVM TI in the jdk5 releases, and from the beginning the plan was to remove it completely from jdk6. For various reasons we ended up just disabling the JVMPI functionality initially in jdk6 to allow for tool vendors to have even more time to transition to JVM TI (a special -X option could enable JVMPI for a short time). Keeping JVMPI working, tested, and reliable was becoming a resource distraction for multiple JDK teams.

-kto

Posted by Kelly O'Hair on January 02, 2009 at 02:34 PM PST #

Post a Comment:
Comments are closed for this entry.