2009-08-25 5 views
4

Я пытаюсь определить количество различий в области памяти небольшого приложения Java, выполняющего один и тот же процесс с многопоточным и многопроцессорным процессом.Как определить размер памяти JVM с несколькими процессами в Linux

Все мои тесты находятся под Linux.

При использовании многопоточного, относительно легко определить общий след и дополнительные накладные расходы на резьбу. При запуске однопоточного процесса JVM имеет большой размер (200-300M виртуального пространства) в соответствии с pmap. Если я запускаю несколько копий одного и того же приложения, я вижу область памяти x N, и ни один из java-кода не разделяется между процессами.

Мне сообщили, что, поскольку Java-код является байт-кодом, а не исполняемым, он не передает код между процессами, как если бы вы сказали C-файлы. Тем не менее, мне было сообщено, что он может использовать технологию Copy-On-Write для достижения того же. Если я использую pmap, он просто сообщает мне о следе процесса и не указывает, сколько может быть передано другому процессу.

Итак, вопрос в том, как определить, сколько данных передается через Copy-On-Write между процессами?

ответ

-3

В правильно настроенной не встроенной системе Linux, почему вы заботитесь о занимаемой памяти?

Какая разница, если бы у вас был ответ?

Данные будут передаваться только между процессами, если один из них был надлежащим предком другого.
И это будет дополнительно определено макетом памяти программы Java и данными на страницах. Все это может измениться с момента выпуска до выпуска.