我想我增加了我的堆大小爲1 GB在NetBeans,因爲我改變了配置看起來像這樣:如何查看應用程序正在使用的當前堆大小?
netbeans_default_options="-J-Xmx1g ......
我重新啓動的NetBeans之後,我可以肯定的是我的應用程序提供1個GB現在呢?
有沒有辦法驗證這一點?
我想我增加了我的堆大小爲1 GB在NetBeans,因爲我改變了配置看起來像這樣:如何查看應用程序正在使用的當前堆大小?
netbeans_default_options="-J-Xmx1g ......
我重新啓動的NetBeans之後,我可以肯定的是我的應用程序提供1個GB現在呢?
有沒有辦法驗證這一點?
使用此代碼:
// Get current size of heap in bytes
long heapSize = Runtime.getRuntime().totalMemory();
// Get maximum size of heap in bytes. The heap cannot grow beyond this size.// Any attempt will result in an OutOfMemoryException.
long heapMaxSize = Runtime.getRuntime().maxMemory();
// Get amount of free memory within the heap in bytes. This size will increase // after garbage collection and decrease as new objects are created.
long heapFreeSize = Runtime.getRuntime().freeMemory();
這是對我有用的知道這一點。
從Sun Java 6 JDK附帶jvisualvm。列出啓動標誌。
visualvm ... no j – vkraemer 2010-01-07 15:35:15
該二進制文件命名爲jvisualvm(.exe)。不知道爲什麼。 – 2010-01-07 18:14:19
對於檢查將訪問您的JVM並顯示所有堆和CPU時間分配可用
插件Eclipse和intellej理念IDE
鏈接,下載Java應用程序堆大小和CPU使用時間的JProfiler工具JProfiler的
您可以使用該工具:Eclipse的內存分析工具http://www.eclipse.org/mat/。
這是非常有用的。
public class CheckHeapSize {
public static void main(String[] args) {
// TODO Auto-generated method stub
long heapSize = Runtime.getRuntime().totalMemory();
// Get maximum size of heap in bytes. The heap cannot grow beyond this size.// Any attempt will result in an OutOfMemoryException.
long heapMaxSize = Runtime.getRuntime().maxMemory();
// Get amount of free memory within the heap in bytes. This size will increase // after garbage collection and decrease as new objects are created.
long heapFreeSize = Runtime.getRuntime().freeMemory();
System.out.println("heapsize"+formatSize(heapSize));
System.out.println("heapmaxsize"+formatSize(heapMaxSize));
System.out.println("heapFreesize"+formatSize(heapFreeSize));
}
public static String formatSize(long v) {
if (v < 1024) return v + " B";
int z = (63 - Long.numberOfLeadingZeros(v))/10;
return String.format("%.1f %sB", (double)v/(1L << (z*10)), " KMGTPE".charAt(z));
}
}
使用此代碼以人類可讀的格式獲取HeapSize的內存 – 2017-06-17 09:59:05
1千字節(1 KB)= 1000字節。 1千字節(1千字節)= 1024字節。 – bcody 2017-08-03 11:29:03
何時jvisualvm是矯枉過正,或者您需要僅CLI個人最喜歡的:jvmtop
JvmTop 0.8.0 alpha amd64 8 cpus, Linux 2.6.32-27, load avg 0.12
https://github.com/patric-r/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
如果使用此策略,則需要重新編譯應用程序(NetBeans)。 – vkraemer 2010-01-07 15:38:28
按照文檔:https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#freeMemory()。上面提到的方法在JVM中返回內存,不一定需要堆內存 – 2018-01-17 18:14:16
請注意,不是所有用'-J-Xmx 1g'指定的堆大小都必須可用於應用程序的對象。虛擬機,尤其是垃圾收集器可能會使用一些內存。 [這裏](https://plumbr.io/blog/memory-leaks/less-memory-than-xmx)多一點關於這個話題。 – 2018-02-01 11:07:57