Apakah JVM di Linux akan mengkonsumsi lebih banyak heap daripada Solaris?

Kami memiliki dua proyek migrasi server baru-baru ini dari Solaris ke RedHat Enterprise di VM. Keduanya adalah aplikasi J2EE yang berjalan pada OC4J 10.1.3.5

Salah satu fenomena menarik yang kami temukan adalah instance OC4J JVM yang dijalankan di Linux sebenarnya akan menempati lebih banyak heap dibandingkan yang dijalankan di Solaris. Misalnya salah satu aplikasi kita hanya akan menggunakan ukuran heap 30 - 40MB di Solaris ketika baru dimulai, sedangkan di Linux, aplikasi tersebut sudah menggunakan 400MB saat start up, yang mana perbedaannya 10 kali lipat. Kasus serupa terjadi pada aplikasi lainnya.

Kami telah memeriksa bahwa semua versi JVM dan argumen start up adalah sama.

Saya telah mencari-cari dan menemukan pertanyaan serupa: Perbedaan antara jvm di linux dan mesin solaris

Namun, saya tidak dapat menemukan artikel teknis tentang masalah ini, apakah ini disebabkan oleh beberapa masalah konfigurasi pada mesin Linux dan bukan pada JVM itu sendiri?

Kami menggunakan JDK 1.6.0_38-b05 64bit

Sunting: Berikut adalah argumen start up JVM: -server -Xms2560M -Xmx2560M


person am5a03    schedule 10.12.2013    source sumber
comment
Apakah server memiliki ukuran memori yang berbeda? JVM melihat ini dan memutuskan ukuran awal yang tepat. - Juga, beri tahu kami apa yang terjadi jika Anda membatasi JVM linux ke -Xmx64m   -  person Ingo    schedule 10.12.2013
comment
Hal ini sangat tergantung pada implementasi JVM. Apakah Anda menggunakan Oracle/Sun JVM pada keduanya?   -  person CodeChimp    schedule 10.12.2013
comment
Apakah itu ukuran set kerja (RSS), atau ruang alamat virtual? Yang terakhir ini tidak masalah, menurut saya.   -  person Raedwald    schedule 10.12.2013
comment
Akan membantu jika kita melihat parameter startup JVM. Mereka mungkin cocok antar server, tetapi seperti yang ditunjukkan @Ingo, ada defaultnya. Jadi jika Anda tidak menentukan ukuran awal, misalnya, defaultnya akan berbeda-beda antar server.   -  person Brandon    schedule 10.12.2013
comment
Saya telah melihat perilaku serupa ketika berpindah dari distribusi Linux lain (tidak ingat yang mana) ke Redhat Enterprise Linux 6. Saya rasa Anda harus bertanya kepada orang-orang pendukung RedHat.   -  person jeroen_de_schutter    schedule 10.12.2013
comment
@Ingo Kami telah menetapkan argumen -Xms dan -Xmx secara eksplisit ke 2560M. Argumen start up di JVM adalah -server -Xms2560M -Xmx2560M   -  person am5a03    schedule 10.12.2013
comment
Apakah perpustakaan asli terlibat? Perintah apa yang Anda gunakan untuk mengukur penggunaan memori? Apa yang tertulis pmap -x java_pid di kedua OS?   -  person jlliagre    schedule 11.12.2013