Best way to measure Memory Usage of a Java Program

2020-07-11 04:14发布

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.

5条回答
一夜七次
2楼-- · 2020-07-11 04:47

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

查看更多
beautiful°
3楼-- · 2020-07-11 04:52
Runtime.getRuntime().freeMemory();

Runtime.getRuntime().totalMemory();
查看更多
走好不送
4楼-- · 2020-07-11 04:55

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

查看更多
兄弟一词,经得起流年.
5楼-- · 2020-07-11 05:04

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

查看更多
我欲成王,谁敢阻挡
6楼-- · 2020-07-11 05:05

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
查看更多
登录 后发表回答