Comment voir la taille du tas actuelle qu'une application utilise?
-
19-09-2019 - |
Question
Je pense que j'augmenté ma taille de tas à 1 Go NetBeans depuis que je changé la configuration pour ressembler à ceci:
netbeans_default_options="-J-Xmx1g ......
Après avoir redémarré NetBeans, puis-je être sûr que mon application est donné 1 Go maintenant?
Y at-il un moyen de vérifier cela?
La solution
Utilisez ce code:
// 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();
Il m'a été utile de le savoir.
Autres conseils
Vous pouvez utiliser jconsole (standard avec la plupart des JDKs) pour vérifier la taille des tas de tout processus java.
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));
}
}
Joindre avec jvisualvm de Sun Java 6 JDK. drapeaux de démarrage sont répertoriés.
Vous pouvez utiliser l'outil: Eclipse Memory Analyzer outil http://www.eclipse.org/mat/ .
Il est très utile.
préféré quand jvisualvm est surpuissant ou vous avez besoin cli seule: 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
Pour vérifier vos outils d'application java taille de la pile et le temps CPU utilisation JProfiler qui peuvent accéder à votre machine virtuelle Java et afficher tous les tas et la répartition du temps CPU
plug in disponible pour éclipse et intellej Idea IDE
Lien pour téléchargement JProfiler