Depuis quelques années, je développe à nouveau avec IDEA, et je suis satisfait jusqu'à présent. Le problème est juste un comportement bizarre de l'utilisation de la mémoire et de l'action de GC pendant que je travaille sur des projets, ce qui fait que mon IDE se bloque pendant quelques secondes pendant que GC fait son travail. Quelle que soit la taille du projet sur lequel je travaille, après quelques jours, l'utilisation de la mémoire augmente jusqu'à 500 Mo (mon espace de stockage maximal est de 512 Mo et, en fait, je suppose que cela doit être suffisant pour les projets Web qui ont environ 100 fichiers java). Après que GC ait fait son travail, j'ai 400 Mo utilisés - non collectés - et seulement environ 100 Mo libres sur le tas et en quelques minutes, l'utilisation de la mémoire augmente et le tas est à nouveau plein.
JVM version is 19.0-b09
using thread-local object allocation.
Parallel GC with 2 thread(s)
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 536870912 (512.0MB)
NewSize = 178257920 (170.0MB)
MaxNewSize = 178257920 (170.0MB)
OldSize = 4194304 (4.0MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 16777216 (16.0MB)
MaxPermSize = 314572800 (300.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 145489920 (138.75MB)
used = 81242600 (77.4789810180664MB)
free = 64247320 (61.271018981933594MB)
55.84070704004786% used
From Space:
capacity = 16384000 (15.625MB)
used = 0 (0.0MB)
free = 16384000 (15.625MB)
0.0% used
To Space:
capacity = 16384000 (15.625MB)
used = 0 (0.0MB)
free = 16384000 (15.625MB)
0.0% used
PS Old Generation
capacity = 358612992 (342.0MB)
used = 358612992 (342.0MB)
free = 0 (0.0MB)
100.0% used
PS Perm Generation
capacity = 172621824 (164.625MB)
used = 172385280 (164.3994140625MB)
free = 236544 (0.2255859375MB)
99.86296981776765% used
c'est comme ça que mon espace de tas semble. Il est remarquable que l'ancienne génération et la génération Perm utilisent environ 100% de leur espace. Mais j'ai déclenché GC manuellement plusieurs fois. La question est la suivante : comment puis-je faire en sorte que l'IDE balaye ces objets dans l'ancienne génération sans démarrer l'IDE ? (Après le démarrage, l'utilisation de la mémoire est d'environ 60MB -90 MB) comment puis-je trouver ce qu'ils sont ? Il y a quelques threads en cours d'exécution qui peuvent être observés dans VisualVM comme RMI TCP Connection, RMI TCP Accept, XML RPC Weblistener et ainsi de suite, bien que je ne fasse rien sur l'IDE et ils consomment toujours de la mémoire même 5-10 MBs par seconde.
$ uname -a
Linux bagdemir 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 21:21:01 UTC 2011 i686 GNU/Linux
$ java --version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Server VM (build 19.1-b02, mixed mode)
MISE À JOUR : configuration de la mémoire : -Xms256m -Xmx512m -Xmn170m -XX:MaxPermSize=300m