JMP - Java Memory Profiler JMP logo
 
General
About
Installation
Licence
Changelog
Screenshot
Performance

Download
Current version: 0.18
jmp.tar.gz

Contacts
Robert Olofsson
d94-rol@nada.kth.se

  Performance

Depending on how you run jmp it takes between 2 and 20 times as long for the java program to complete. JVMPI is quite slow, enabling all events that jmp uses makes the program take up to 10 times as long.

It seems that jdk/1.4 is much slower on jvmpi than jdk/1.3, some more testing will have to be done. If possible try to use the IBM jdk since it is much faster than the jdk from SUN.

The standard test case for jmp is running the RabbIT proxy on localhost. And then time a wget for 182 standard url (apache/mod_perl/mod_ssl documentation) from the local webserver, like this:

robo@orc:~/src/RabbIT2 > java -Xrunjmp rabbit.proxy.Proxy & robo@orc:~/slask/hubba > export http_proxy=http://orc:9666/ robo@orc:~/slask/hubba > time wget -o ../log -i ../localurls real 0m17.880s user 0m0.110s sys 0m0.110s

Timing table for this test under jmp/0.14 and RabbIT/2.0.16. Test machine is an AMD athlon 1 GHz. 512 MB RAM. Running a partially upgraded SuSE Linux/7.1
IBM 1.3.0SUN 1.3.1SUN 1.4.0
Not using a proxy-0.2540.2540.254
Without JMPjava rabbit.proxy.Proxy4.1314.3775.56
JMP tracing objectsjava -Xrunjmp:nomethods,nogui rabbit.proxy.Proxy8.79313.15816.249
Hacked JMP to time JVMPI overhead. Method tracing, immediate return. java -Xrunjmp:noobjects,nogui rabbit.proxy.Proxy4.86922.2551.97
JMP tracing methodsjava -Xrunjmp:noobjects,nogui rabbit.proxy.Proxy9.09234.76480.145
JMP tracing objects and methods, not showing guijava -Xrunjmp:nogui rabbit.proxy.Proxy15.05839.60488.951
JMP tracing objects and methods showing guijava -Xrunjmp rabbit.proxy.Proxy17.88042.11295.422

The test performes a number of operations:
IBM 1.3.0SUN 1.3.1SUN 1.4.0
c_class_load 430 435 709
c_class_unload 0 0 85
c_object_alloc 780 250 785 817 856 540
c_object_move 0 159 410 150 911
c_object_free 703 100 756 876 819 390
c_thread_start 61 48 52
c_thread_end 46 31 32
c_method_entry 3 358 998 6 187 726 13 267 765
c_method_exit 3 358 958 6 187 691 13 267 706
SUN 1.4.0 calls many more methods, that is one of the reasons that it is so much slower to profile.