Bagaimana mesin maya Java melaksanakan kebuntuan
Setakat ini, saya rasa alat yang paling berkesan untuk menganalisis masalah kod Java ialah java thread dump Sebabnya ialah:
1.
2. Dalam kebanyakan kes, ia boleh digunakan dalam persekitaran pengeluaran.
3. Berbanding dengan alat yang disediakan oleh sistem pengendalian, maklumat yang diberikan oleh java thread dump adalah mudah dan sepadan secara langsung dengan kod aplikasi.
4. Ia mempunyai sedikit gangguan terhadap sistem yang dianalisis, jadi ia boleh mencerminkan masalah sebenar. Banyak alat pemprofilan atau instrumen lain sendiri mempunyai gangguan besar terhadap operasi JVM dan sering gagal mendedahkan masalah sebenar Selain itu, alat tersebut tidak boleh digunakan dalam sistem pengeluaran.
Saya rasa lebih mudah untuk menganalisis kebuntuan mesin maya Java daripada kebocoran memori dalam keadaan biasa. Kerana apabila kebuntuan berlaku, JVM biasanya dalam keadaan digantung (hang), dan pembuangan benang boleh memberikan maklumat statik dan stabil Untuk mencari jalan buntu, anda hanya perlu mencari benang yang dipersoalkan. Masalah kebocoran memori adalah sukar untuk ditakrifkan. Terdapat banyak objek dalam JVM yang sedang berjalan Hanya mereka yang menulis program tahu objek mana yang sampah dan yang tidak, hubungan rujukan objek sangat rumit, menjadikannya sukar untuk diperoleh graf rujukan objek yang jelas.
Apabila kebuntuan mesin maya Java berlaku, perhatikan dari sistem pengendalian bahawa penggunaan CPU mesin maya adalah sifar dan tidak lama lagi akan hilang daripada output atas atau prstat. Pada masa ini, anda boleh mengumpul pembuangan benang Di bawah Unix/Linux, matikan -3
Selepas mendapat java thread dump, apa yang anda perlu lakukan ialah mencari thread "menunggu kemasukan monitor". hanya terdapat satu utas untuk kunci objek), ini menunjukkan bahawa kebuntuan mungkin berlaku. Sebagai contoh:
"service-j2ee" prio=5 tid=0x024f1c28 nid=0x125 waiting for monitor entry [62a3e000..62a3f690] [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at com.sun.enterprise.resource.IASNonSharedResourcePool.internalGetResource(IASNonS haredResourcePool.java:625) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: - waiting to lock <0x965d8110> (a com.sun.enterprise.resource.IASNonSharedResourcePool) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at com.sun.enterprise.resource.IASNonSharedResourcePool.getResource(IASNonSharedRes ourcePool.java:520) ................
Untuk menentukan masalah, selalunya perlu mengumpul semula pembuangan benang selepas dua minit Jika output yang diperolehi adalah sama, masih terdapat sejumlah besar benang menunggu untuk mengunci alamat yang sama, maka Ia mesti buntu.
Cara mencari benang yang sedang memegang kunci adalah kunci untuk menyelesaikan masalah. Kaedahnya ialah mencari tempat pembuangan benang, cari "terkunci <0x965d8110>", dan cari benang yang memegang kunci.
[27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: "Thread-20" daemon prio=5 tid=0x01394f18 nid=0x109 runnable [6716f000..6716fc28] [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at java.net.SocketInputStream.socketRead0(Native Method) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at java.net.SocketInputStream.read(SocketInputStream.java:129) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.net.ns.Packet.receive(Unknown Source) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.net.ns.DataPacket.receive(Unknown Source) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.net.ns.NetInputStream.read(Unknown Source) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.net.ns.NetInputStream.read(Unknown Source) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.net.ns.NetInputStream.read(Unknown Source) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java:929) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java:893) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.jdbc.ttc7.Ocommoncall.receive(Ocommoncall.java:106) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.jdbc.ttc7.TTC7Protocol.logoff(TTC7Protocol.java:396) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: - locked <0x954f47a0> (a oracle.jdbc.ttc7.TTC7Protocol) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1518) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: - locked <0x954f4520> (a oracle.jdbc.driver.OracleConnection) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at com.sun.enterprise.resource.JdbcUrlAllocator.destroyResource(JdbcUrlAllocator.java:122) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at com.sun.enterprise.resource.IASNonSharedResourcePool.destroyResource(IASNonSharedResourcePool.java:8 72) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at com.sun.enterprise.resource.IASNonSharedResourcePool.resizePool(IASNonSharedResourcePool.java:1086) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: - locked <0x965d8110> (a com.sun.enterprise.resource.IASNonSharedResourcePool) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at com.sun.enterprise.resource.IASNonSharedResourcePool$Resizer.run(IASNonSharedResourcePool.java:1178) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at java.util.TimerThread.mainLoop(Timer.java:432) [27/Jun/2006:10:03:08] WARNING (26140): CORE3283: stderr: at java.util.TimerThread.run(Timer.java:382)
Dalam contoh ini, benang yang memegang kunci sedang menunggu Oracle untuk mengembalikan hasil, tetapi ia tidak pernah menunggu respons, jadi kebuntuan berlaku.
Jika benang yang memegang kunci masih menunggu untuk mengunci objek lain, maka ikuti kaedah di atas sehingga anda menemui punca kebuntuan.
Selain itu, benang sedemikian sering dilihat dalam pembuangan benang Ia adalah benang yang menunggu keadaan dan secara aktif melepaskan kunci.
Contohnya:
"Thread-1" daemon prio=5 tid=0x014e97a8 nid=0x80 in Object.wait() [68c6f000..68c6fc28] at java.lang.Object.wait(Native Method) - waiting on <0x95b07178> (a java.util.LinkedList) at com.iplanet.ias.util.collection.BlockingQueue.remove(BlockingQueue.java:258) - locked <0x95b07178> (a java.util.LinkedList) at com.iplanet.ias.util.threadpool.FastThreadPool$ThreadPoolThread.run(FastThreadPool.java:241) at java.lang.Thread.run(Thread.java:534)
Kadang-kadang perlu menganalisis jenis benang ini, terutamanya syarat untuk menunggu benang.
Sebenarnya, pelupusan benang Java bukan sahaja digunakan untuk menganalisis gelagat pelik lain apabila menjalankan aplikasi Java boleh dianalisis dengan pembuangan benang.
***, dalam Java SE 5, alat jstack ditambah, dan pembuangan benang juga boleh diperolehi. Dalam Java SE 6, anda juga boleh mencari kebuntuan dengan mudah yang melibatkan pemantau objek dan java.util.concurrent.locks melalui alat grafik jconsole.
Atas ialah kandungan terperinci Bagaimana mesin maya Java melaksanakan kebuntuan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











AI boleh membantu mengoptimumkan penggunaan komposer. Kaedah khusus termasuk: 1. Pengoptimuman Pengurusan Ketergantungan: AI menganalisis kebergantungan, mengesyorkan kombinasi versi terbaik, dan mengurangkan konflik. 2. Generasi Kod Automatik: AI menjana fail komposer.json yang sesuai dengan amalan terbaik. 3. Meningkatkan Kualiti Kod: AI mengesan masalah yang berpotensi, memberikan cadangan pengoptimuman, dan meningkatkan kualiti kod. Kaedah ini dilaksanakan melalui pembelajaran mesin dan teknologi pemprosesan bahasa semulajadi untuk membantu pemaju meningkatkan kecekapan dan kualiti kod.

Fungsi MySQL boleh digunakan untuk pemprosesan dan pengiraan data. 1. Penggunaan asas termasuk pemprosesan rentetan, pengiraan tarikh dan operasi matematik. 2. Penggunaan lanjutan melibatkan menggabungkan pelbagai fungsi untuk melaksanakan operasi kompleks. 3. Pengoptimuman prestasi memerlukan mengelakkan penggunaan fungsi dalam klausa WHERE dan menggunakan GroupBy dan jadual sementara.

Kaedah untuk mengkonfigurasi set aksara dan kolasi dalam MySQL termasuk: 1. Menetapkan set aksara dan kolasi di peringkat pelayan: setNames'utf8 '; Setcharactersetutf8; SetCollation_Connection = 'UTF8_GENERAL_CI'; 2. Buat pangkalan data yang menggunakan set aksara tertentu dan kolasi: createdataTabaseexample_dbcharactersetutf8collateutf8_general_ci; 3. Nyatakan set aksara dan kolasi semasa membuat jadual: createTableExample_table (idint

Menamakan semula pangkalan data dalam MySQL memerlukan kaedah tidak langsung. Langkah -langkah adalah seperti berikut: 1. Buat pangkalan data baru; 2. Gunakan mysqldump untuk mengeksport pangkalan data lama; 3. Import data ke dalam pangkalan data baru; 4. Padam pangkalan data lama.

Melaksanakan corak singleton di C dapat memastikan bahawa hanya ada satu contoh kelas melalui pembolehubah ahli statik dan fungsi ahli statik. Langkah -langkah khusus termasuk: 1. Gunakan pembina peribadi dan padamkan pembina salinan dan pengendali tugasan untuk mengelakkan instantiasi langsung luaran. 2. Menyediakan titik akses global melalui kaedah statik GetInstance untuk memastikan hanya satu contoh yang dibuat. 3. Untuk keselamatan benang, mod kunci semak dua boleh digunakan. 4. Gunakan petunjuk pintar seperti std :: shared_ptr untuk mengelakkan kebocoran ingatan. 5. Bagi keperluan prestasi tinggi, pembolehubah tempatan statik boleh dilaksanakan. Harus diingat bahawa corak singleton boleh menyebabkan penyalahgunaan negara global, dan disyorkan untuk menggunakannya dengan berhati -hati dan mempertimbangkan alternatif.

JavaPlaysasignificantroleiniotduetoitsplatformindant.1) itAllowscodetobewrittenceandondrariousdevices.2) Java'secosystemprovidesuseFullibrariesforiot.3)

Java sesuai untuk membangunkan aplikasi web cross-server. 1) Falsafah "Tulis Sekali, Di Mana -mana" Java membuat kodnya dijalankan di mana -mana platform yang menyokong JVM. 2) Java mempunyai ekosistem yang kaya, termasuk alat seperti Spring dan Hibernate, untuk memudahkan proses pembangunan. 3) Java melaksanakan dengan baik dalam prestasi dan keselamatan, menyediakan pengurusan memori yang cekap dan jaminan keselamatan yang kuat.

Bagaimana untuk menetapkan kesan putaran elemen dalam HTML? Ia boleh dicapai menggunakan CSS dan JavaScript. 1. Harta transformasi CSS digunakan untuk putaran statik, seperti berputar (45DEG). 2. JavaScript boleh mengawal putaran secara dinamik, yang dilaksanakan dengan mengubah atribut Transform.
