开发者

Best way to measure Memory Usage of a Java Program?

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 doi开发者_运维知识库ng 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.


Runtime.getRuntime().freeMemory();

Runtime.getRuntime().totalMemory();


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


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


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


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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜