Menganalisis memori maksimum versi JVM yang berbeza bagi beberapa syarikat popular, dan hasilnya adalah seperti berikut: Memori maksimum bagi pelayan memori maksimum pelanggan (megabait) versi JVM (megabait) syarikat SUN 1.5. x 1492 1520 SUN 1.5.5(Linux) 2634 2660 SUN 1.4.2 1564 1564 SUN 1.4.2(Linux) 1900 1260 IBM 1.4.2 1564 1564 SUN 1.4.2(Linux) 1900 1260 IBM 1.4.260BEA JRockit 1.5 (U3) 1909 1902 Melainkan dinyatakan sebaliknya, semua versi JVM dijalankan di bawah sistem pengendalian Windows Apa yang saya ingin gambarkan melalui jadual ini ialah jika mesin anda mempunyai terlalu banyak memori, hanya Anda boleh meningkatkan penggunaan mesin dengan menjalankan beberapa lagi kejadian Contohnya, jika anda menjalankan Tomcat, anda boleh memasang beberapa lagi Tomcats dan mencipta kluster, dan sebagainya. Memori Timbunan dan Bukan Timbunan Menurut kenyataan rasmi: "Mesin maya Java mempunyai timbunan. Timbunan ialah kawasan data masa jalan dan memori semua kejadian dan tatasusunan kelas diperuntukkan dari sini. Timbunan itu Dicipta apabila mesin maya Java bermula "Memori di luar timbunan dalam JVM dipanggil memori bukan timbunan." Ia boleh dilihat bahawa JVM terutamanya menguruskan dua jenis ingatan: timbunan dan bukan timbunan. Ringkasnya, heap ialah memori yang boleh diakses oleh kod Java dan dikhaskan untuk pembangun adalah memori yang dikhaskan untuk JVM untuk kegunaannya sendiri, jadi memori yang diperlukan untuk kawasan kaedah dan pemprosesan atau pengoptimuman dalaman JVM (seperti Cache kod yang disusun JIT), setiap struktur kelas (seperti kumpulan pemalar masa jalan, data medan dan kaedah), dan kod untuk kaedah dan pembina semuanya berada dalam memori luar timbunan. Peruntukan memori timbunan Memori awal yang diperuntukkan oleh JVM ditentukan oleh -Xms, dan lalai ialah 1/64 daripada memori fizikal, memori maksimum yang diperuntukkan oleh JVM ditentukan oleh -Xmx, dan lalai ialah 1/4 daripada memori; ingatan fizikal. Secara lalai, apabila memori timbunan percuma kurang daripada 40%, JVM akan meningkatkan timbunan sehingga had maksimum -Xmx apabila ingatan timbunan percuma lebih daripada 70%, JVM akan mengurangkan timbunan sehingga had minimum; -Xms. Oleh itu, pelayan biasanya menetapkan -Xms dan -Xmx adalah sama untuk mengelak daripada melaraskan saiz timbunan selepas setiap GC. Peruntukan memori bukan timbunan JVM menggunakan -XX:PermSize untuk menetapkan nilai awal memori bukan timbunan, lalai ialah 1/64 daripada memori fizikal XX:MaxPermSize menetapkan saiz maksimum memori bukan timbunan, lalainya ialah 1/4 daripada ingatan fizikal. Had memori JVM (nilai maksimum) Pertama sekali, memori JVM adalah terhad kepada memori fizikal maksimum sebenar (karut! Haha Dengan mengandaikan bahawa memori fizikal adalah tidak terhingga, nilai maksimum memori JVM mempunyai banyak kaitan dengan sistem pengendalian). . Secara ringkasnya, walaupun ruang memori boleh dikawal bagi pemproses 32-bit ialah 4GB, sistem pengendalian tertentu akan menetapkan had ini secara amnya ialah 2GB-3GB (secara umumnya, ia adalah 1.5G-2G di bawah sistem Windows dan 1.5. G-2G di bawah sistem Linux).
Jadi sebab utama program tidak boleh dimulakan kerana menetapkan parameter VM adalah seperti berikut: 1) Nilai -Xms dalam parameter lebih besar daripada -Xmx, atau nilai -XX:PermSize ialah lebih besar daripada -XX:MaxPermSize 2) - Jumlah nilai Xmx dan -XX:MaxPermSize melebihi had maksimum memori JVM, seperti had memori maksimum sistem pengendalian semasa, atau memori fizikal sebenar, dsb.
1. Ia bergantung pada situasi setiap aplikasi, seperti purata jumlah permintaan harian, purata saiz memori selepas fullgc, dll. 2 memori sistem pengendalian
Menganalisis memori maksimum versi JVM yang berbeza bagi beberapa syarikat popular, dan hasilnya adalah seperti berikut:
Jadi sebab utama program tidak boleh dimulakan kerana menetapkan parameter VM adalah seperti berikut: 1) Nilai -Xms dalam parameter lebih besar daripada -Xmx, atau nilai -XX:PermSize ialah lebih besar daripada -XX:MaxPermSize 2) - Jumlah nilai Xmx dan -XX:MaxPermSize melebihi had maksimum memori JVM, seperti had memori maksimum sistem pengendalian semasa, atau memori fizikal sebenar, dsb.Memori maksimum bagi pelayan memori maksimum pelanggan (megabait) versi JVM (megabait) syarikat
SUN 1.5. x 1492 1520
SUN 1.5.5(Linux) 2634 2660
SUN 1.4.2 1564 1564
SUN 1.4.2(Linux) 1900 1260
IBM 1.4.2 1564 1564
SUN 1.4.2(Linux) 1900 1260
IBM 1.4.260BEA JRockit 1.5 (U3) 1909 1902
Melainkan dinyatakan sebaliknya, semua versi JVM dijalankan di bawah sistem pengendalian Windows
Apa yang saya ingin gambarkan melalui jadual ini ialah jika mesin anda mempunyai terlalu banyak memori, hanya Anda boleh meningkatkan penggunaan mesin dengan menjalankan beberapa lagi kejadian Contohnya, jika anda menjalankan Tomcat, anda boleh memasang beberapa lagi Tomcats dan mencipta kluster, dan sebagainya.
Memori Timbunan dan Bukan Timbunan Menurut kenyataan rasmi: "Mesin maya Java mempunyai timbunan. Timbunan ialah kawasan data masa jalan dan memori semua kejadian dan tatasusunan kelas diperuntukkan dari sini. Timbunan itu Dicipta apabila mesin maya Java bermula "Memori di luar timbunan dalam JVM dipanggil memori bukan timbunan." Ia boleh dilihat bahawa JVM terutamanya menguruskan dua jenis ingatan: timbunan dan bukan timbunan. Ringkasnya, heap ialah memori yang boleh diakses oleh kod Java dan dikhaskan untuk pembangun adalah memori yang dikhaskan untuk JVM untuk kegunaannya sendiri, jadi memori yang diperlukan untuk kawasan kaedah dan pemprosesan atau pengoptimuman dalaman JVM (seperti Cache kod yang disusun JIT), setiap struktur kelas (seperti kumpulan pemalar masa jalan, data medan dan kaedah), dan kod untuk kaedah dan pembina semuanya berada dalam memori luar timbunan. Peruntukan memori timbunan Memori awal yang diperuntukkan oleh JVM ditentukan oleh -Xms, dan lalai ialah 1/64 daripada memori fizikal, memori maksimum yang diperuntukkan oleh JVM ditentukan oleh -Xmx, dan lalai ialah 1/4 daripada memori; ingatan fizikal. Secara lalai, apabila memori timbunan percuma kurang daripada 40%, JVM akan meningkatkan timbunan sehingga had maksimum -Xmx apabila ingatan timbunan percuma lebih daripada 70%, JVM akan mengurangkan timbunan sehingga had minimum; -Xms. Oleh itu, pelayan biasanya menetapkan -Xms dan -Xmx adalah sama untuk mengelak daripada melaraskan saiz timbunan selepas setiap GC. Peruntukan memori bukan timbunan JVM menggunakan -XX:PermSize untuk menetapkan nilai awal memori bukan timbunan, lalai ialah 1/64 daripada memori fizikal XX:MaxPermSize menetapkan saiz maksimum memori bukan timbunan, lalainya ialah 1/4 daripada ingatan fizikal. Had memori JVM (nilai maksimum) Pertama sekali, memori JVM adalah terhad kepada memori fizikal maksimum sebenar (karut! Haha Dengan mengandaikan bahawa memori fizikal adalah tidak terhingga, nilai maksimum memori JVM mempunyai banyak kaitan dengan sistem pengendalian). . Secara ringkasnya, walaupun ruang memori boleh dikawal bagi pemproses 32-bit ialah 4GB, sistem pengendalian tertentu akan menetapkan had ini secara amnya ialah 2GB-3GB (secara umumnya, ia adalah 1.5G-2G di bawah sistem Windows dan 1.5. G-2G di bawah sistem Linux).
1. Ia bergantung pada situasi setiap aplikasi, seperti purata jumlah permintaan harian, purata saiz memori selepas fullgc, dll.
2 memori sistem pengendalian