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

Documentation
users_guide [ps]
users_guide [pdf]
users_guide [lyx]

Download
Source
Current version: 0.51.1
jmp.tar.gz

Other versions jmp-0.51.1.tar.gz
jmp-0.50.2.tar.gz
jmp/0.18, gtk/1.2 
jmp-0.18.tar.gz

Binaries
jmp.deb [0.48, i386]
jmp.deb [0.42, amd64]
jmp.deb [0.48, ppc]
jmp.dll [0.50.1]
gtk+/2.2.0 Win32

Old versions

Contacts
Robert Olofsson
robo@khelekore.org

  Changelog

version 0.51.1 (2008-05-02) Made the main window ui resize nicer (toby). version 0.51 (2006-06-05) Tried to fix compilation problems on FreeBSD, Solaris and other systems with pthread but without PTHREAD_MUTEX_RECURSIVE_NP. Fixed the crash that occured when jmp was started with object tracing off and then object tracing was enabled later on. Fixed the problem that the method window did not show when method events were disabled. version 0.50.2 (2006-05-12) Darryl: fixing a problem with freeze ui causing crashes. Added missing ui_none.h (spotted by Etti). version 0.50.1 (2006-04-01) Darryl: ENABLE_NLS isn't available under MINGW32. Another update for java/1.4. version 0.50 (2006-02-15) Made jmp usable on java/1.4.x again. Made jmp compilable on gcc/2.95 again. version 0.49 (2006-01-24) Added Darryl Miles patches: lot of file renaming, one deadlock less, better gtk shutdown handling, better system thread handling and a fix for better debuggability of monitors. Also added patchset 2 from Darryl Miles: comparator function now have reverser. Lots of code moving and file rename. Added a gtk event system. Added view menu to toggle class and method windows. Added preference saving and restoring. Updated gettext version. Better handling of windows builds (patch from Darryl). version 0.48 (2005-10-29) Added Ians patch for OpenBSD compilation. The string dumper did not close the dump file, spotted by Markus Kohler. Wolfgang Baer updated the german translation and added a man page. Made noui version compilable again. version 0.47 (2005-05-22) Added a string dumper for the no-ui mode. Fixed the missing column headers for the dump files. Added Ondrej's patch to show better units in the heap graph. Added units to class and method tables. version 0.46 (2005-01-11) Added a right-click meny "expand" in the object owners dialog, makes it possible to trace owners all the way to the source. Added Yegors patch for dumping entered methods. Added a Total object in the owned object statistics dialog. The show object owners statistics dialog now show the instances, not the number of links into the selected class. version 0.45 (2004-12-01) Added Martins patch to show "time per call" in the method window. Added tenure levels to class and instance list. Class events are now enabled only when they need to. This means that running with nomethods,noobjects should be faster (until one of them is enabled). Removed some unnecessary prints from the heap dump file. Changed the dumpfile argument to dumpdir so both dump and heapdump files go to that directory. Made minor adjustments to the jvm simulator and the simulator mode of jmp. version 0.44 (2004-10-19) Added a patch from Matze that enlarge the temporary buffer for the method name translation. Tried to make jmp more gtk-thread aware, thanks to Francois for testing it. Added Luca's patch to find java-includes under hp-ux. Added Martins patch that adds a column "alloced per call" to the method list. version 0.43 (2004-08-17) Added method callee graph, same features/bugs as the normal call graph. Added the ability to group object allocations to the filetered methods only. Minor fixes to stack mismatch handling. version 0.42 (2004-05-11) Added popup menues to the object owners dialog. Made sure that the no-ui version is usable again. Included Mikko's patch for better parsing of filter options. version 0.41 (2004-03-23) Added a level so that it is possible to ask for objects in the current reset level only. This means that show alloced instances and string inspector have improved usability. Added the possibility to show owners for a given string and a given instance. Heap dump no longer throw away allocation sites for objects if object tracing was on when the heap dump was requested. version 0.40 (2004-03-07) Improved the jvm simulator and used valgrind and electric fence to fix a few memory problems. Added a dialog that can be used to change the number of visible rows. Roland Illig updated the german translation. Some code cleanup. String inspector now also shows how much memory each char[] uses. version 0.39 (2004-02-03) Added menu separators in some menues. Added a string dumper that makes it easy to inspect all strings in memory, it also has the ability to dump all strings to a file. Fixed a bug in down link handling that caused instance numbers to increase for arrays (thanks to matze who tried to use the string inspector and did send back traces from crashes). version 0.38 (2004-01-07) Changed from one filter to many filters. Added status bars to method and class list. Some more code cleanup. Major rewrite of filterconfig to handle multiple filters. Added a window that shows owner statistics (java.lang.String is owned by 23 Class, 12 Hashtable$Entry...). version 0.37 (2003-12-09) Fixed the freeze-button to show different texts depending on mode. Added missing sort for variable name in object dump window. Added owned objects statistics, a window that shows how many objects are reachable from a given object. version 0.36 (2003-10-23) Added monitor dump parsing and a window that shows the current monitors, including the threads that wait to enter or wait for notify. Code cleanup. Commented the code some more. Added a semi-automatic deadlock detector. version 0.35 (2003-09-23) Fixed a bug that caused crashes at shutdown if no object tracing had been done. Fixed a problem where some method exits got negative time diffs, which could cause some methods to have taken _very_ long. Some code cleanup. Removed some locking of timerstacks giving a good performance boost. Fixed a hang on exit when the nogui option is used. version 0.34 (2003-09-02) Fixed some bugs that caused crashes during shutdown and file dumping. A problem with displaying strings outside of ASCII was fixed. version 0.33 (2003-08-14) Added a heap size indicator in the heap graph. Added text fields to show the heap size, current usage and filtered usage. When an instance is inspected the node is now auto expanded. version 0.32 (2003-07-10) Added a bootstrap script. Made it possible to expand Object[] and char[]. Merged a patch by Andy Farlie to make it possible to compile with gtk+/2.0 again. version 0.31 (2003-06-24) Added a heap total and filtered total usage row to the dump files. Added a class info dialog that displays all the variables (both instance and static) in the class. Each instance in the instance list can now be expanded to show object instances owned by a specific object. version 0.30 (2003-05-20) Updated the dialog for allocated instances, it now show the arena name if known. Updated timerstack to hold the object id for the object the method is waiting for (either normal wait or contention). Updated thread window to show the object the selected thread is waiting on. Removed some synchronization from object_alloc. Fixed a deadlock that could cause the UI thread to hang if the thread window was open. Fixed some minor memory leaks (some objects were not released on exit). Added a jvm simulator that can be used to profile/debug jmp. Minor update to configure for freeBSD. Enabling method events on startup no longer causes jmp to try to get the stacks (since that crashes some jvms). Heap dump and enable/disable of object events does not increase the GC-count anymore. version 0.29 (2003-04-09) Fixed a problem where some objects were not counted correctly after a heap dump. Fixed a problem where method_exit could get a NULL method and crash jmp. Reenabled the code that asks the jvm for a method when method_entry can not find it which happens when class was loaded before jvmpi was started. Added some useful methods to the java API. Updated Makefile to hold targets for the java parts. Wrote javadoc for the java parts. version 0.28 (2003-03-19) Removed some unneeded includes. Added help and status text to the instance owner dialog. Made instance owner show no more than 100 top level objects (tree gets very large otherwise). Changed time strings to have only 6 decimals. Changed color (from grey to green) for the filtered set in the heap graph. Changed to vertical pane in threads window, which puts the stack trace table under the thread list. Remove all objects before a heap dump is parsed which fixes a problem where objects were counted multiple times. The code to show instance owners now tries to request unknown objects and classes and thus shows more information. version 0.27 (2003-02-15) Fixed a problem where an early method_exit caused jmp to crash. Minor fixes for FreeBSD compilation from Ronald. Updated german localization. Merged a patch from Bodo that adds thread status and thread total time to the threads window and also has a bug fix for monitor contenation handling. version 0.26 (2003-01-12) Merged a patch from Bodo: add two columns to method, the columns are number of alloced objects in method and number of alloced bytes in method. Simplification and speedup of contenation handling. The time function is now selected at startup depending on jvm vendor and version since GetCurrentThreadCpuTime has a bug in SUN's jvm, not in IBM's, absolute timing under linux uses some special code for better accuracy. Merged patch from Chris Hane to compile under windows. Merged a patch from Bodo to speed up timerstack locking/unlocking (by removing most of the calls since they are not needed). Merged a patch from Ronald Klop: Include sys/types.h in heap_dump.c if it exists to compile under FreeBSD and changed name of jmp's hash_* to jmphash_* to avoid clashes with hash functions in libc (on *BSD and other unixes). version 0.25 (2003-01-01) Added a target "install-to-java" to installing jmp into the jdk, which makes it possible to run jmp without setting the LD_LIBRARY_PATH. Corrected email adressess in AUTHORS and other files. Heap dumps now tries to get object allocations when it gets instances that are unknown. Added a filter flag to struct cls, which means that we only filter on class_load and set_filter instead of each ui-loop. Made the numeric colums be right aligned. Updated list view handling. Added a heap size graph. Updated the UI code to be much faster. Updated TODO file. version 0.24 (2002-12-17) Many changes by robo, Marco and Bodo. Code cleanup and performance: Removed a lot of gtk_widget_show since gtk_widget_show_all is used. Removed the unused struct timeval and calls to gettimeofday from method_entry and method_exit handling. A method pointer is now stored in the timerstack and the timerstacks are only locked if thread window is open this speeds up the method_entry and method_exit handling. Initial framework to enable and disable method and object events at runtime, making it possible to run with jmp with almost no performance hit until profiling is needed and enabled. Added code to handle stack cleanup after stack underflow or after method profiling has been enabled. version 0.23 (2002-12-09) Big patch from Marco Walther: the patch puts a monitor in each hash table and timerstack and uses that monitor to synchronize access to the hash tables, this makes crashes quite rare even when profiling method calls. Minor fixes in object owners to handle the case where objects have been garbage collected. version 0.22 (2002-11-16) Fixed a compile problem when building with --disable-nls. Add forgotten file close in no-ui.c. Added more garbage collection statistics. Added a jmp.dll target for thoose who want to run jmp under windows. Changed time fields to hold jlong with nanoseconds instead of struct timeval, this gives better portability and cleaner code. Splitted out filter and filter dialog to get filter even in noui-mode. version 0.21 (2002-09-16) Fixed so that it should be possible to run with "nogui" (when run with DISPLAY unset). Restructured code a lot to enable the --enable-noui when configuring which gives a libjmp that does not need gtk (only useful with dumptimer=3600 or options like that). A side effect of --enable-noui is that it should now be easy to add other user interfaces with other toolkits like windows/qt/mac. Added some statistics after garbage collect. Version 0.20 (2002-08-15) Updated the gui to use GTK+/2.0 instead of the GTK+/1.2. Updates to configure script to handle gtk-change. Some large files were splitted. Some code reorganisation. version 0.18 (2002-06-22) Made the thread status window update on the same timer as the other status windows. Fixed a problem with early monitor events (crash upon starting).Fixed a problem with early method exits and uninitilized stack (crash upon starting). Disabling monitor profiling at shut down solved one crash at exit. Minor UI updates on the thread status window. version 0.17 (2002-06-04) Removed the updater thread and moved its duties into gtk-timeouts instead. Made the UI more responsive during heap dumps. Restructured initialization a little bit. Minor UI tweaks. Added contenation info to the threads window. Added sorting to the threads window. version 0.16 (2002-05-20) Made it more thread safe by removing static method variables. Added a window that shows the current threads togheter with the stack for the selected thread. Made the ui updating a bit faster. UI tweaks. Updated swedish translation. version 0.15 (2002-04-24) Merged in patches from Bodo Pfelzer: hash tables now store a list of free elements so they do not have to call malloc in move object (forbidden according to jvmpi spec). Added status texts to get more information (Bodo). Updated german translation (Bodo). Added some more comments in the code. Modified the method struct to handle class moves during GC. Minor ui updates. version 0.14 (2002-04-13) Some more memory handling. Object owners show a tree of the owners in a new window. Disable events at shutdown means less crashes on exit due to half freed structures. Menu entry for show instance owners are only possible when a heap dump has been done. version 0.13 (2002-03-29) Fixed the total count field, it should now hold correct values and always be showing. Cleaned up some memory allocations. Removed some unused code. Updated configure to handle that JAVA_HOME points to IBM's sdk (include files are located somewhat different). Added filter options on the class lists and method lists right click menu. Added tracing in a few important places. Started heap dump handling. Handle object_move for classes. Initial owner lists for objects. Changed objects internal represantation slightly to speed up GC with class moves. version 0.12 (2002-01-26) Added Bodo Pfelzer's i18n patch. Added german l10n (also Bodo), Added swedish l10n (me). Added a patch to avoid deadlock when garbage collection was requested with the [GC]-button (Bernd Petersohn). Added initial help text (java -Xrunjmp:help). Added a dump on timer mode (available with -Xrunjmp:dumptimer=<n>). Splitted out some function from long files. Added sorting to object table. version 0.11 (2002-01-10) Added Bodo Pfelzer's patch for filtering shown objects and methods. Added a column to show a methods total time (own + methods called). Updated configure script to look after java as specified in the JAVA_HOME environment variable (Bodo + own fixes). version 0.10 (2002-01-01) Added the ability to show live objects alloced by a method. Added the ability to show all live objects of a certain class. Added initial sizes to windows. Removed some debug info. Renamed test programs to jmp_<prog_name>. Added a TODO file to the project. Added a first draft of a method call graph. version 0.9 (2001-12-23) Added Erik Agsjö's patch to dump thread status, modified it to get full stack traces. Changed the updates of the tables to use update instead of clear and append, thanks to Bodo Pfelzer. Translated the jvm's method/field signatures to human readable form. version 0.8 (2001-12-11) Added the possibility to restore the counters to real values. Added the quit-ui and check_quit (on timer) to be able to get gtk_main-thread to call gtk_quit () hopefully this should make jmp and IBM's jvm work better together. Added the possibility to freeze the ui updates. version 0.7 (2001-11-24) Fixed the broken objectstore to use a version from Bodo Pfelzer (slightly modified to alloc in chunks) instead. Added a button to reset the counters (calls, times, instances) to zero which is useful for profiling a specific method. version 0.6 (2001-11-13) Dump results on exit. Dump on request is available. Added the possibility to sort columns by clicking on a header. Only shows the windows that need to be open. Only updates the windows that are showing. Added a window with some buttons to dump data and request a garbage collect. Added an about dialog. Dump files are named sequentially so you can diff them. version 0.5 (2001-11-05) Speed improvements. Method exit should not lock in the normal case anymore. The crash on exit should not happen anymore. Added the possibility to trace jmp (compile with CFLAGS='-DJMPDEBUG'). version 0.4 (2001-10-13) Major Speed improvements. Method entry does not lock anymore. Fixed the problems with classes where we get no source file. version 0.3 (2001-10-02) Made the gtk-ui thread aware so this should mean no more "async Xlib reply". Fixed some memory problem bugs. version 0.2 (2001-09-28) Many changes. Sorted the object table based on bytes used. Make the object table keep its visible set of rows. Added thread and method tracing. Added a generic stack (used for method tracing). version 0.1 (2001-08-xx) No changes yet.