Как просмотреть текущий размер кучи, который использует приложение?

поэтому я думаю, что увеличиваю размер кучи до 1 ГБ в netbeans, я изменил конфигурацию, чтобы выглядеть так:

netbeans_default_options="-J-Xmx1g ......

Я закрыл и снова запустил netbeans, могу ли я быть уверен, что моему приложению теперь будет 1GB? или есть способ проверить это?

Ответ 1

Используйте этот код:

// 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(); 

Мне было полезно знать это.

Ответ 2

Вы можете использовать jconsole (стандартный с большинством JDK) для проверки размеров кучи любого java-процесса.

Ответ 3

Присоединитесь к jvisualvm от Sun Java 6 JDK. Включены флаги запуска.

Ответ 4

Вы можете использовать инструмент: Инструмент анализа памяти Eclipse http://www.eclipse.org/mat/.

Это очень полезно.

Ответ 5

Для проверки размера кучи java-приложения и времени процессора используйте инструменты JProfiler, которые будут иметь доступ к вашей JVM и отображать распределение кучи и времени процессора

подключаемый модуль для eclipse и intellej Idea IDE

Ссылка для загрузки Jprofiler

http://www.ej-technologies.com/download/jprofiler/files

Ответ 6

открытый класс 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));
}

Ответ 7

Личный фаворит, когда 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