Rumah >Java >javaTutorial >Kaedah penalaan mesin maya Java JVM

Kaedah penalaan mesin maya Java JVM

WBOY
WBOYke hadapan
2023-04-19 10:04:021374semak imbas

jmap Lihat maklumat memori

jmap histo /pid > ./log.txt: Lihat bilangan kejadian proses, bilangan bait memori yang diduduki dan kelas miliknya

Kaedah penalaan mesin maya Java JVM

jmap -heap /pid: Lihat maklumat timbunan

Kaedah penalaan mesin maya Java JVM

Kaedah penalaan mesin maya Java JVM

jmap ‐dump: format=b, file=app.hprof /pid

Kaedah penalaan mesin maya Java JVM

Kaedah penalaan mesin maya Java JVM

Mulakan antara muka pengurusan visual jvm melalui arahan jvisualvm dan import fail dump untuk analisis: Lihat contoh nama utas " Thread-1"; prio=5 priority=5; 🎜>

mula Gunakan arahan jvisualvm untuk memilih proses yang sepadan untuk melihat benang buntu

Kaedah penalaan mesin maya Java JVM

Jstack menganalisis maklumat tindanan benang dengan penggunaan CPU yang tinggi

Mula gelung seketika, Pastikan CPU berfungsi
public class DeadLockTest {
    private final static Object lock1 = new Object();
    private final static Object lock2 = new Object();
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (lock1) {
                    try {
                        System.out.println(Thread.currentThread().getName() + ": get the lock1");
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (lock2) {
                        System.out.println(Thread.currentThread().getName() + ": get the lock2");
                    }
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (lock2) {
                    try {
                        System.out.println(Thread.currentThread().getName() + ": get the lock2");
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (lock1) {
                        System.out.println(Thread.currentThread().getName() + ": get the lock1");
                    }
                }
            }
        }).start();
    }
}

1 atas -p /pid: Lihat penggunaan sumber proses Kaedah penalaan mesin maya Java JVM

Jelas sekali proses ini. menyebabkan penggunaan CPU hampir 100%.

2. Tekan H untuk melihat sumber yang diduduki oleh setiap urutan dalam proses Kaedah penalaan mesin maya Java JVM

3. Cari lajur PID yang menggunakan hampir 100% CPU , menunjukkan benang Tid ialah 5027. Tukarkannya kepada heksadesimal kepada 13a3 melalui penukar

4 Laksanakan jstack 5026|grep -A 10 13a3 melalui perintah jstack untuk mendapatkan maklumat tindanan tid 13a. , dan kemudian cari sebabnya.

Kaedah penalaan mesin maya Java JVM

jinfo -sysprops /pid: Lihat parameter sistem java

Kaedah penalaan mesin maya Java JVMJstat Lihat penggunaan memori timbunan dan maklumat kuantiti pemuatan kelas

jstat -gc /pid: Statistik kutipan sampah

Kaedah penalaan mesin maya Java JVMS0C: Saiz kawasan pertama yang terselamat, dalam KB S1C: Saiz kedua kawasan yang terselamat; S0U: Saiz terpakai bagi kawasan yang terselamat yang pertama; ; ; YGCT: masa penggunaan kutipan sampah generasi muda, unit s; FGC: Bilangan kutipan sampah generasi lama; jstat -gccapacity/pid: Statistik memori timbunan

NGCMN: kapasiti minimum generasi baharu; NGCMX: kapasiti maksimum generasi baharu; generasi baru; S0C: saiz kawasan yang terselamat pertama; penjanaan; OGC: saiz generasi lama semasa; saiz ruang kelas mampatan; CCSC: Saiz ruang kelas mampatan semasa YGC: Bilangan GC generasi muda: Bilangan GC generasi lama

Kaedah penalaan mesin maya Java JVM jstat -gcnew /pid: Lihat statistik kutipan sampah generasi baharu

TT: Bilangan kali objek bertahan dalam generasi baharu: MTT: Bilangan maksimum objek bertahan dalam generasi baharu: DSS: Saiz kawasan mangsa yang dijangkakanKaedah penalaan mesin maya Java JVM

jstat -gcnewcapacity/pid: Semak kapasiti memori generasi baharu

S0CMX: Saiz kawasan yang terselamat maksimum 1; S1CMX: Saiz zon maksimum 2; Saiz Zon Eden Kaedah penalaan mesin maya Java JVM

jstat -gcold /pid: Lihat statistik kutipan sampah generasi lama

jstat -gcoldcapacity/pid: Lihat statistik kutipan sampah generasi lama Ingatan umur kapasitiKaedah penalaan mesin maya Java JVM

jstat -gcmetacapacity/pid: Lihat statistik ruang metadata

Kaedah penalaan mesin maya Java JVM

Anda boleh mengoptimumkan parameter permulaan aplikasi java melalui perintah jstat gc -pid jstat -gc pid 1000 10 (laksanakan arahan setiap 1 saat, 10 kali jumlahnya) untuk menganggarkan bilangan objek baharu yang akan ditambah. Kawasan Eden sesaat Masa boleh dilaraskan berdasarkan hasil tertentu. Sebenarnya, idea pengoptimuman adalah semata-mata untuk cuba menjadikan objek yang masih hidup selepas setiap GC Muda kurang daripada 50% kawasan Survivor, dan mengekalkannya dalam generasi muda. Cuba jangan biarkan objek memasuki usia tua. Cuba kurangkan kekerapan GC Penuh sebanyak mungkin untuk mengelakkan kesan GC Penuh yang kerap pada prestasi JVM.

Memori bocor

Bagi sesetengah data lama, seperti memori tahap jvm tidak dibersihkan mengikut masa, mengakibatkan semakin banyak data terkumpul dari masa ke masa, ia akan kerap menjadi penuh gc, sekali gus menyebabkan kebocoran ingatan. Anda boleh menggunakan ehcache seni bina cache matang, yang telah melaksanakan strategi penghapusan data LRU.

Atas ialah kandungan terperinci Kaedah penalaan mesin maya Java JVM. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam