Я пытаюсь определить количество различий в области памяти небольшого приложения Java, выполняющего один и тот же процесс с многопоточным и многопроцессорным процессом.Как определить размер памяти JVM с несколькими процессами в Linux
Все мои тесты находятся под Linux.
При использовании многопоточного, относительно легко определить общий след и дополнительные накладные расходы на резьбу. При запуске однопоточного процесса JVM имеет большой размер (200-300M виртуального пространства) в соответствии с pmap. Если я запускаю несколько копий одного и того же приложения, я вижу область памяти x N, и ни один из java-кода не разделяется между процессами.
Мне сообщили, что, поскольку Java-код является байт-кодом, а не исполняемым, он не передает код между процессами, как если бы вы сказали C-файлы. Тем не менее, мне было сообщено, что он может использовать технологию Copy-On-Write для достижения того же. Если я использую pmap, он просто сообщает мне о следе процесса и не указывает, сколько может быть передано другому процессу.
Итак, вопрос в том, как определить, сколько данных передается через Copy-On-Write между процессами?