J'essaie de quantifier la différence d'empreinte mémoire d'une petite application Java effectuant le même processus multithread vs multiprocessus.Comment déterminer l'empreinte de la mémoire JVM avec plusieurs processus sous Linux
Tous mes tests sont sous Linux. Lors de l'exécution multithread, il est relativement facile de déterminer l'empreinte globale et le surdébit supplémentaire par thread. Lors de l'exécution du processus à un seul thread, la JVM a une grande empreinte (espace virtuel 200-300M) selon pmap. Si j'exécute plusieurs copies de la même application, je vois l'empreinte mémoire x N et aucun code java n'est partagé entre les processus.
J'ai été informé que puisque le code Java est bytecode, pas exécutable, il ne partage pas le code entre les processus comme vous le feriez avec les binaires C par exemple. Cependant, j'ai été informé par la suite qu'il pourrait utiliser la technologie Copy-On-Write pour obtenir la même chose. Si j'utilise pmap, cela me dit simplement l'empreinte du processus et n'indique pas combien peut être partagé avec un autre processus. Donc, la question est: Comment déterminer combien de données sont partagées via Copy-On-Write entre les processus?