jps, jconsole, and visualgc don’t like FAT


I was visiting a customer yesterday together with Éamonn McMannus (JMX Spec Lead) and some of the questions he got were on security and especially on jconsole connecting to running VMs. It reminded of a problem I had only on windows when trying to demo jconsolejps didn’t return anything, not even its own PID, and when trying to use a PID I got from the task manager, jconsole wouldn’t connect to it even with the appropriate startup flag (-Dcom.sun.management.jmxremote).

Today, trying to work with the NetBeans Visual GC Integration Module, I couldn’t get to list all running VMs and could only connect to NetBeans itself.

It turns out that I have two FAT32 partitions. Well, as explained in the jvmstat FAQ (jvmstat is the ancestor to the monitoring and management tools in tiger):


For security reasons, the shared memory exported by the HotSpot JVM is disabled whenever the JVM encounters a FAT type file system (more precisely, any file system that does not support persistent access control lists) as such file systems provide insufficient access controls.

So the workaround I used (I have no NTFS drive to use as my TEMP space) is the -XX:+PerfBypassFileSystemCheck startup option for the VM to be monitored which solved my problem for tools (NetBeans VisualGC, JConsole, …) relying on shared memory to access monitoring data.

The NetBeans Visual GC integration module now has an additional note on the subject. Thanks Ian and Brian.

Author: alexismp

Google Developer Relations in Paris.