Buka Direktori Instalasi Idea dan lihat bahwa ada direktori bin dengan dua file VMOptions, yang perlu dikonfigurasi untuk JDK yang berbeda:
32 Bit: Idea.exe.vmoptions
64 bit: Ide64.exe.vmoptions
-Xms512m -xmx1024m -xx: maxpermsize = 512m -xx: cadangan codedcachesize = 225m -xx:+useconcmarksweepgc -xx: softreflrupolymspermb = 50 -aSun.io.usecanoncaches = FALLE -VAPA = 50 -aSun.OO.USECANCACHES = FALLE -VAPAPE -50 -dsun.io.usecanoncaches = FALLE = 50 -aA -Sun.IO.USECACACHES = FALLE = 50 -aSUR.DSUN.IO.USECACACHES =
Daftar di atas adalah konten default idea64.exe.vmoptions , yang dapat kami modifikasi sesuai kebutuhan.
Arti dari setiap parameter adalah:
1. Atur Pengaturan Memori JVM
1. Ada empat parameter untuk mengatur memori JVM:
-Xmx Java Heap Nilai maksimum, nilai default adalah 1/4 dari memori fisik. Nilai pengaturan optimal harus tergantung pada ukuran memori fisik dan overhead memori lainnya di komputer;
-Xms Java Heap Nilai Awal. Yang terbaik adalah server JVM untuk mengatur -xms dan -xmx ke nilai yang sama. JVM dari mesin pengembangan dan pengujian dapat mempertahankan nilai default;
-Xmn Java Heap Young Area Ukuran, yang terbaik adalah menjaga nilai default jika Anda tidak terbiasa dengannya;
-Xss Ukuran tumpukan dari setiap utas, yang terbaik adalah menjaga nilai default jika Anda tidak terbiasa dengan itu;
2. Cara Mengatur Alokasi Memori JVM:
(1) Saat memulai dan menggunakan JVM di prompt perintah (hanya efektif untuk tes kelas yang sedang berjalan):
java -xmx128m -xms64m -xmn32m -xss16m tes
(2) Saat memulai dan menggunakan JVM di lingkungan pengembangan terintegrasi (seperti Eclipse):
A. Open eclipse.ini di direktori root gerhana, dan konten default adalah (alokasi memori JVM diatur di sini untuk menjalankan alat pengembangan saat ini):
-VMargs berarti bahwa yang berikut ini adalah parameter pengaturan mesin virtual. Anda dapat memodifikasi nilai parameter di dalamnya, atau menambahkan -xmn dan -xss. Selain itu, memori non -heap dapat diatur dalam eclipse.ini, seperti: -xx: permsize = 56m, -xx: maxpermsize = 128m.
Nilai parameter yang diatur di sini dapat ditampilkan di bilah status alat pengembangan melalui konfigurasi berikut:
Buat opsi file di direktori root eclipse, konten file adalah: org.eclipse.ui/perf/showHeapStatus=true
Ubah file eclipse.ini di direktori root gerhana dan tambahkan konten berikut di awal:
Restart Eclipse dan Anda dapat melihat bahwa ada lebih banyak informasi JVM di bilah status di bawah ini.
B. Open Eclipse-Window-Preferensi-JRE yang dipasang di Java (efektif untuk semua program Java yang berjalan di lingkungan pengembangan saat ini)
Edit JRE yang saat ini digunakan, masukkan: -xmx128m -xms64m -xmn32m -xss16m
C. Aplikasi terbuka eclipse-run-run-java (hanya efektif untuk kelas java set)
Pilih kelas untuk mengatur alokasi memori -argumen, masukkan dalam argumen VM: -xmx128m -xms64m -xmn32m -xss16m
Catatan: Jika B dan C diatur pada saat yang sama di lingkungan pengembangan yang sama, pengaturan B berlaku dan pengaturan C tidak valid, seperti:
Pengaturan lingkungan pengembangan adalah: -xmx256m, dan pengaturan tes kelas adalah: -xmx128m -xms64m, pengaturan yang berlaku saat menjalankan tes adalah:
-Xmx256m -Xms64m
(3) Saat memulai dan menggunakan JVM di lingkungan server (seperti Tomcat) (jadi program Java mulai berlaku di lingkungan server saat ini):
A. Setel variabel lingkungan:
Nama Variabel: Catalina_opts
Nilai variabel: -xmx128m -xms64m -xmn32m -xss16m
B. Buka folder bin di direktori root tomcat, edit catalina.bat, dan ganti �talina_opts% (total empat tempat) dengan: -xmx128m -xms64m -xmn32m -xss16m
2. Periksa informasi memori JVM
Runtime.getRuntime (). MaxMemory (); // memori maksimum yang tersedia, sesuai dengan -xmx
Runtime.getRuntime (). Freememory (); // memori bebas JVM saat ini
Runtime.getRuntime (). TotalMemory (); // memori total yang ditempati oleh JVM saat ini setara dengan jumlah memori yang digunakan oleh JVM saat ini dan freememory ()
Tentang maxmemory (), freememory () dan totalMemory ():
MaxMemory () adalah memori maksimum yang tersedia dari JVM, yang dapat diatur melalui -xmx. Nilai default adalah 1/4 dari memori fisik, dan nilai yang ditetapkan tidak dapat lebih tinggi dari memori fisik komputer;
TotalMemory () adalah memori total yang ditempati oleh JVM saat ini, dan nilainya setara dengan jumlah memori yang digunakan oleh JVM saat ini dan freememory (), yang akan meningkat ketika JVM menggunakan memori meningkat;
Freememory () adalah memori bebas JVM saat ini. Karena JVM hanya menempati memori fisik ketika memori diperlukan, nilai freememory () umumnya sangat kecil. Memori JVM yang tersedia aktual tidak sama dengan freememory (), tetapi harus sama dengan maxmemory ()-totalMemory ()+freememory (). Ini menetapkan alokasi memori JVM.
Lihat dokumentasi resmi:
http://docs.sun.com/source/819-0084/pt_tuningjava.html
Parameter startup Java dibagi menjadi tiga kategori;
Salah satunya adalah parameter standar (-), semua implementasi JVM harus mengimplementasikan fungsi parameter ini dan kompatibel ke belakang;
Yang kedua adalah parameter non-standar (-x). JVM default mengimplementasikan fungsi parameter ini, tetapi tidak menjamin bahwa semua implementasi JVM terpenuhi dan tidak dijamin akan kompatibilitas mundur;
Yang ketiga adalah parameter non-stabil (-xx). Setiap implementasi JVM dari parameter tersebut akan berbeda dan dapat dibatalkan kapan saja di masa depan. Itu perlu digunakan dengan hati -hati;
Lebih berguna di antara parameter standar:
verbose
-Verbose: Kelas
Output informasi yang relevan dari JVM memuat kelas, dan ini dapat digunakan untuk diagnosis ketika JVM melaporkan bahwa kelas tidak dapat ditemukan atau konflik kelas.
-Verbose: GC
Output situasi yang relevan dari setiap GC.
-Verbose: JNI
Output Situasi yang relevan dari panggilan metode asli, yang umumnya digunakan untuk mendiagnosis informasi kesalahan panggilan JNI.
Parameter non-standar juga disebut parameter yang diperluas
Yang paling umum digunakan adalah
-Xms512m mengatur JVM untuk menyebabkan memori menjadi 512m. Nilai ini dapat diatur sama dengan -xmx untuk menghindari memori realokasi JVM setiap kali pengumpulan sampah selesai.
-Xmx512m, atur memori maksimum yang tersedia dari JVM ke 512m.
-Xmn200m: Tetapkan ukuran generasi muda menjadi 200m. Ukuran Tumpukan Utuh = Ukuran Generasi Muda + Ukuran Generasi Tua + Ukuran Generasi Persisten. Generasi permanen umumnya ditetapkan dalam ukuran 64m, jadi setelah meningkatkan generasi muda, ukuran generasi yang lebih tua akan berkurang. Nilai ini memiliki dampak besar pada kinerja sistem, dan Sun secara resmi merekomendasikan konfigurasi sebagai 3/8 dari seluruh tumpukan.
-Xss128k:
Mengatur ukuran tumpukan untuk setiap utas. Setelah JDK5.0, ukuran tumpukan masing -masing utas adalah 1m, dan di masa lalu, ukuran tumpukan masing -masing utas adalah 256K. Lebih banyak utas aplikasi membutuhkan ukuran memori untuk menyesuaikan. Dalam memori fisik yang sama, mengurangi nilai ini dapat menghasilkan lebih banyak utas. Namun, sistem operasi masih memiliki batas jumlah utas dalam suatu proses dan tidak dapat dihasilkan secara tak terbatas, dengan nilai pengalaman mulai dari sekitar 3000 hingga 5.000.
-Xloggc: File
Mirip dengan fungsi -Verbose: GC, hanya mencatat situasi yang relevan dari setiap peristiwa GC ke dalam file. Lokasi file paling lokal untuk menghindari potensi masalah jaringan.
Jika perintah Verbose muncul pada baris perintah secara bersamaan, -xloggc akan menang.
-Xprof
Melacak program yang menjalankan dan mengeluarkan data pelacakan pada output standar; Cocok untuk debugging lingkungan pembangunan.
Daftar parameter dengan -xx karena awalan mungkin tidak diminta dalam JVM, dan Sun tidak dianjurkan, dan dapat dibatalkan tanpa pemberitahuan di masa depan; Namun, banyak dari parameter ini memang sangat berguna bagi kita, seperti -xx: permsize, -xx: maxpermsize, dll. Yang sering kita lihat;
Pertama, mari kita perkenalkan parameter perilaku:
| Parameter dan nilai defaultnya | menggambarkan |
| -Xx: -disablexplicitgc | System.gc () dilarang; Tapi JVM GC masih valid |
| -Xx:+maxfdlimit | Maksimalkan batas jumlah deskriptor file |
| -Xx:+scavengebeforefullgc | Generasi GCS berikutnya lebih diutamakan daripada eksekusi GC penuh |
| -Xx:+useGcoverHeadLimit | Batasi proporsi waktu yang dihabiskan untuk GC oleh JVM sebelum melempar OOM |
| -Xx: -useconcmarksweepgc | GC untuk generasi yang lebih tua menggunakan algoritma pertukaran tanda bersamaan |
| -Xx: -useparallelgc | Aktifkan GC paralel |
| -Xx: -useparalleloldgc | Aktifkan paralelisme untuk GC penuh, dan item ini secara otomatis diaktifkan ketika -xx: -useparallelgc diaktifkan. |
| -Xx: -useserialgc | Aktifkan Serial GC |
| -Xx:+Usethreadpriority | Aktifkan prioritas utas lokal |
Tiga parameter tebal dalam tabel di atas mewakili eksekusi GC di JVM
Ada tiga cara untuk berjejer, yaitu serial, paralel, dan konkurensi;
SerialGC adalah metode JVM GC default. Ini umumnya cocok untuk aplikasi kecil dan prosesor tunggal. Algoritma ini relatif sederhana dan efisiensi GC tinggi, tetapi dapat menyebabkan jeda pada aplikasi;
ParallelGC mengacu pada runtime GC, yang tidak berdampak pada pengoperasian aplikasi. Utas GC dan APP dieksekusi secara bersamaan, sehingga pengoperasian aplikasi tidak terpengaruh sampai tingkat maksimum;
Concurrency (concmarksweepgc) mengacu pada beberapa utas yang mengeksekusi GC secara bersamaan. Ini umumnya cocok untuk sistem multi-prosesor. Ini dapat meningkatkan efisiensi GC, tetapi algoritma ini kompleks dan sistem banyak mengkonsumsi;
Daftar Parameter Tuning Kinerja:
| Parameter dan nilai defaultnya | menggambarkan |
| -Xx: largePageSizeInbytes = 4m | Atur ukuran halaman besar untuk tumpukan java |
| -Xx: maxheapFreeratio = 70 | Proporsi terbesar jumlah idle di tumpukan java setelah GC |
| -Xx: maxnewsize = ukuran | Nilai memori maksimum yang dapat ditempati oleh objek yang baru dihasilkan |
| -Xx: maxpermsize = 64m | Nilai memori maksimum yang dapat ditempati oleh objek generasi yang lebih tua |
| -Xx: MinHeapFreeratio = 40 | Proporsi minimum jumlah idle di tumpukan java setelah GC |
| -Xx: newRatio = 2 | Rasio kapasitas memori generasi baru dengan kapasitas memori generasi lama |
| -Xx: newsize = 2.125m | Nilai default memori menempati saat objek generasi baru dihasilkan |
| -Xx: cadangan codecachesize = 32m | Simpan kapasitas memori yang ditempati oleh kode |
| -Xx: ThreadStackSize = 512 | Atur ukuran tumpukan utas. Jika 0, gunakan nilai default sistem. |
| -Xx:+Uselargepages | Gunakan memori halaman besar |
Dalam penyetelan kinerja harian kami, kami pada dasarnya akan menggunakan atribut -atribut ini dengan huruf tebal di atas;
Daftar Parameter Debug:
| Parameter dan nilai defaultnya | menggambarkan |
| -Xx: -citime | Pencetakan mengkonsumsi waktu dalam kompilasi jit |
| -Xx: errorFile =./Hs_err_pid <pid> .log | Simpan log kesalahan atau data ke dalam file |
| -Xx: -ExtendedDtraceprobes | Nyalakan probe DTRACE khusus Solaris |
| -Xx: heapduppath =./Java_pid <pid> .hprof | Tentukan jalur atau nama file saat mengekspor informasi heap |
| -Xx: -heapdumponoutofmemoryError | Ekspor Informasi yang relevan di tumpukan saat bertemu OOM untuk pertama kalinya |
| -Xx: | Jalankan perintah khusus setelah kesalahan fatal muncul |
| -Xx: onoutofmemoryError = "<cmd args>; <cmd args>" | Jalankan perintah khusus saat bertemu OOM untuk pertama kalinya |
| -Xx: -printclasshistogram | Cetak Informasi Kolom dari Class Instance Setelah bertemu Ctrl -Break, sama dengan fungsi JMAP -Histo |
| -Xx: -printconcurrentlocks | Cetak informasi yang relevan tentang kunci bersamaan setelah menemukan ctrl -break, fungsi yang sama dengan jStack -l |
| -Xx: -printCommandlineflags | Cetak tanda yang muncul di baris perintah |
| -Xx: -printCompilation | Cetak informasi yang relevan saat metode dikompilasi |
| -Xx: -printgc | Cetak informasi yang relevan setiap kali GC |
| -Xx: -printgc Detail | Cetak detail setiap kali GC |
| -Xx: -printgcTimestamps | Cetak stempel waktu setiap GC |
| -Xx: -traceclassloading | Lacak informasi pemuatan kelas |
| -Xx: -traceclassloadingPreorder | Melacak informasi pemuatan semua kelas yang dirujuk ke |
| -Xx: -traceclassResolution | Melacak kolam konstan |
| -Xx: -traceclassunloading | Melacak informasi uninstall kelas |
| -Xx: -traceloaderconstraints | Melacak informasi tentang kendala class loader |
Meringkaskan
Di atas adalah metode operasi untuk mengatur parameter running JVM dari Intellij Idea yang diperkenalkan kepada Anda. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!