views:

88

answers:

6

I'm currently using visualvm, but the problem I'm having is that I can't save the graphs it generates. I need to report some data about its memory usage and running time, though running time is easy to get with System.nanoTime(). I've also tried the netbeans profiler but it isn't what I want, since I'm not looking for specific parts that would be slowing it down or anything, so that would be overkill. The biggest problem with it is that it eats up too much processing time. Also doesn't let me capture/transfer the data easily, like visualvm, at least as far as I can tell.

Ideally the best way to go about it would be some method call because then I'd be able to get the information a lot more easily, but anything like visualvm that actually lets me save the graph is fine. Performance with visualvm is pretty good too, compared to the netbeans profiler, though I suppose that's because I wasn't using its profiler.

I'm currently using Ubuntu, but Windows 7 is fine. I'd rather have a program that specializes in doing this though, since the information gotten by programs who don't is likely to include the JVM and other things that would be better left out.

Well, apparently, you can save snapshots of the current session and maximize the window in visualvm, so you could make the charts bigger, take a snapshot and cut them... But that's kind of a hack. Better suggestions welcome. Also, FREE.

A: 

Try JProfiler. Although its not free you can try evaluation version first.

Gopi
A: 

You may try VisualVM that comes with Oracle (Sun) JDK. It provides very detailed info

Yuri.Bulkin
Not to sound rude or anything, but did you read the OP?
iceburn
Sorry, hurried up to help and has missed the paragraph in which you speak about it
Yuri.Bulkin
A: 

Look at the Runtime class. It has freeMemory, maxMemory, and totalMemory. That's probably close enough for your purposes.

Will Hartung
A: 

The HPjmeter console is free. Run your Java process with -Xloggc:<file> and open the <file> with it. Not only can you save your sessions, but you can compare runs. Other options to consider including in your command line are:

-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
Amir Afghani
+1  A: 

You may prefer graceful method to measure memory, rather than hack image. JConsole is known to Monitor Applications by JMX,it provides program API. I guess it is what you need.

See: Using JConsole to Monitor Applications

卢声远 Shengyuan Lu
A: 
Runtime.getRuntime().freeMemory();

Runtime.getRuntime().totalMemory();
Auxiliary