Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Java Virtual Machine (JVM) menggunakan memori secara konservatif karena mengasumsikan memori OS harus dibagikan di antara beberapa aplikasi. Namun, aplikasi kontainer Anda dapat mengoptimalkan penggunaan memori dan membuat jumlah memori maksimum yang mungkin tersedia untuk aplikasi Anda. Pengoptimalan memori ini dikenal sebagai penyesuaian memori otomatis Java. Ketika pengepasan memori diaktifkan, performa aplikasi Java biasanya ditingkatkan antara 10% dan 20% tanpa perubahan kode apa pun.
Azure Container Apps menyediakan kecocokan memori otomatis dalam keadaan berikut:
- Satu aplikasi Java berjalan dalam kontainer.
- Aplikasi Anda disebarkan dari kode sumber atau file JAR.
Penyesuaian memori otomatis diaktifkan secara default, tetapi Anda dapat menonaktifkan secara manual.
Menonaktifkan penyesuaian memori
Penyesuaian memori otomatis sangat membantu dalam sebagian besar skenario, tetapi mungkin tidak ideal untuk semua situasi. Anda dapat menonaktifkan penyesuaian memori baik secara manual maupun otomatis.
Menonaktifkan Secara Manual
Untuk menonaktifkan penyesuaian memori saat Anda membuat aplikasi kontainer, atur variabel BP_JVM_FIT lingkungan ke false.
Contoh berikut menunjukkan kepada Anda cara menggunakan perintah create, up, dan update untuk menonaktifkan kecocokan memori.
az containerapp create \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--image <CONTAINER_IMAGE_LOCATION> \
--environment <ENVIRONMENT_NAME> \
--env-vars BP_JVM_FIT="false"
Untuk memverifikasi bahwa pengepasan memori dinonaktifkan, periksa log Anda untuk pesan berikut:
Menonaktifkan penyesuaian memori jvm, alasannya: dinonaktifkan secara manual
Nonaktifkan otomatis
Pengikatan memori secara otomatis dinonaktifkan ketika salah satu kondisi berikut terpenuhi:
Memori kontainer terbatas: Memori kontainer kurang dari 1 GB.
Mengatur opsi memori secara eksplisit: Ketika satu atau beberapa pengaturan memori ditentukan dalam variabel lingkungan melalui
JAVA_TOOL_OPTIONS. Opsi pengaturan memori mencakup nilai berikut:-XX:MaxRAMPercentage-XX:MinRAMPercentage-XX:InitialRAMPercentage-XX:MaxMetaspaceSize-XX:MetaspaceSize-XX:ReservedCodeCacheSize-XX:MaxDirectMemorySize-Xmx-Xms-Xss
Misalnya, pemasangan memori secara otomatis dinonaktifkan jika Anda menentukan ukuran heap maksimum dalam variabel lingkungan seperti yang ditunjukkan dalam contoh berikut:
az containerapp update \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --image <CONTAINER_IMAGE_LOCATION> \ --set-env-vars JAVA_TOOL_OPTIONS="-Xmx512m"Dengan penyesuaian memori dinonaktifkan, Anda akan melihat pesan berikut dicatatkan ke dalam log.
Menonaktifkan penyesuaian memori JVM, alasan: gunakan pengaturan yang ditentukan dalam JAVA_TOOL_OPTIONS=-Xmx512m sebagai alternatif Menggunakan JAVA_TOOL_OPTIONS: -Xmx512m
Ukuran memori non-heap kecil: Kasus langka ketika ukuran heap atau non-heap yang dihitung terlalu kecil (kurang dari 200 MB).
Verifikasi bahwa kecocokan memori diaktifkan
Periksa aliran log Anda selama proses startup untuk pesan yang mengacu pada Konfigurasi Memori JVM Terhitung.
Berikut adalah contoh output pesan selama start-up.
Konfigurasi Memori JVM Terhitung: -XX:MaxDirectMemorySize=10M -Xmx1498277K -XX:MaxMetaspaceSize=86874K -XX:ReservedCodeCacheSize=240M -Xss1M (Total Memori: 2G, Jumlah Utas: 250, Jumlah Kelas yang Dimuat: 12924, Headroom: 0%)
Dibaca JAVA_TOOL_OPTIONS: -XX:MaxDirectMemorySize=10M -Xmx1498277K -XX:MaxMetaspaceSize=86874K -XX:ReservedCodeCacheSize=240M -Xss1M
Konfigurasi runtime
Anda dapat mengatur variabel lingkungan untuk memengaruhi perilaku penyesuaian memori.
| Variabel | Satuan | Contoh | Deskripsi |
|---|---|---|---|
BPL_JVM_HEAD_ROOM |
Persentase | BPL_JVM_HEAD_ROOM=5 |
Sisakan ruang memori untuk sistem sesuai dengan persentase yang diberikan. |
BPL_JVM_THREAD_COUNT |
Nomor | BPL_JVM_THREAD_COUNT=200 |
Perkiraan jumlah maksimum utas. |
BPL_JVM_CLASS_ADJUSTMENT |
Nomor Persentase |
BPL_JVM_CLASS_ADJUSTMENT=10000BPL_JVM_CLASS_ADJUSTMENT="10%" |
Sesuaikan jumlah kelas JVM berdasarkan nilai atau persentase eksplisit. |
Catatan
Mengubah variabel ini tidak menonaktifkan penyesuaian memori otomatis.
Peringatan kehabisan memori
Jika Anda memutuskan untuk mengonfigurasi pengaturan memori sendiri, Anda berisiko mengalami peringatan kekurangan memori.
Berikut adalah beberapa kemungkinan alasan mengapa kontainer Anda dapat kehabisan memori:
Memori timbunan lebih besar dari total memori yang tersedia.
Memori nonheap lebih besar dari total memori yang tersedia.
Memori heap + nonheap lebih besar dari total memori yang tersedia.
Jika kontainer Anda kehabisan memori, maka Anda mengalami peringatan berikut:
Peringatan OOM: memori tumpukan 1200M lebih besar dari 1G yang tersedia untuk alokasi (-Xmx1200M)