
JVMM (Monitor JVM) adalah alat yang menyediakan pemantauan berbasis layanan mesin virtual Java dan sistem operasi. Ini memiliki fungsi akuisisi data yang kaya: OS (memori, CPU, status disk dan IO, status kartu jaringan dan IO, dll.), JVM (memori, utas, kumpulan utas, kumpulan memori, GC, loader kelas, dll.), Dan juga menyediakan fungsi, membuat tuno, pemanta LUNCIONINING, POBERSION LINGASI, PENGGUNAAN PERINGKATAN, PENGGUNAAN PERINGKATAN, PENGGUNAAN PERINGKATAN, PENGGUNAAN PERINGKATAN, DET. KUASULAN USAIBASI, DETOL PUSURNING DALAM PERINGKATAN, PERINGKATAN LUNCIONING, LAVING MONEGRI LAVING, DECOMPILASI, dll. Untuk digunakan untuk menggunakan diagram. dll.
Silakan pergi ke rilis untuk mengunduh versi terbaru JVMM dan unzip
Tips: Beberapa fungsi JVMM bergantung pada JDK di lingkungan lokal. Pastikan Anda menginstal JDK, bukan hanya JRE di lingkungan Anda. Verifikasi Sederhana: Jalankan
jps -ldi lingkungan Anda. Jika dapat dieksekusi secara normal dan menghasilkan hasilnya, itu berarti bahwa lingkungannya OK, jika tidak JVMM mungkin tidak dapat berjalan.
Pertama, jalankan perintah berikut untuk menghasilkan paket JAR layanan
java -jar jvmm.jar -m jar -sKemudian mulai server, harap perhatikan versi JDK Anda saat memulai
# 启动server,jdk 8使用下面命令
java -jar jvmm-server.jar
# jdk 9+ 为确保成功运行建议使用下面命令
java -jar --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
--add-opens java.base/java.net=ALL-UNNAMED
--add-opens java.management/sun.management=ALL-UNNAMED
jvmm-server.jarJika server JVMM berhasil dimulai, itu akan berjalan di port 5010 secara default, dan kemudian Anda perlu mengatur jendela baru di direktori saat ini untuk mengeksekusi:
java -jar jvmm.jar -m client -a 127.0.0.1:5010 Jika koneksi server berhasil, Anda akan memasuki mode klien. Anda dapat memasukkan perintah berikut untuk mengumpulkan data proses. Tentu saja, Anda dapat memasukkan help untuk melihat penggunaan semua instruksi yang dapat dieksekusi dalam mode ini.
info -t processBerikut adalah contoh data yang dikumpulkan dalam mode klien JVMM. Fungsi yang disediakan oleh JVMM jauh lebih dari itu. Untuk fungsi lebih lanjut, silakan baca dokumentasi penggunaan JVMM.
Fungsi akuisisi data inti JVMM ada dalam modul core , dan fungsi berorientasi layanan ada di modul server . Menurut skenario penggunaan Anda, Anda dapat memilih dua metode penggunaan berikut:
core (lebih banyak fungsi) Pertama -tama, Anda perlu memahami server apa yang dapat dilakukan? Server menyediakan tiga mode layanan. Sebelum menggunakannya, mana yang perlu Anda pilih lebih cocok untuk Anda. Berikut adalah tiga mode layanan:
Setiap mode layanan tidak dapat dipisahkan dari file konfigurasi jvmm.yml. server.type digunakan untuk mengonfigurasi mode mana atau mode mana yang Anda pilih. Mereka dapat berlari secara bersamaan . Konfigurasi spesifik dari setiap mode sesuai dengan server.jvmm , server.http , dan server.sentinel .
server :
type : jvmm,http,sentinel # 支持同时开启多种模式
jvmm :
# ...
http :
# ...
sentinel :
# ...Untuk konfigurasi default, lihat JVMM.YML, dan untuk informasi konfigurasi, lihat komentar di file konfigurasi.
JVMM menyediakan empat cara untuk memulai server Anda:
-javaagent parameter)jvmm-server.jar secara langsung (dekompilasi dan kode fungsi pembaruan panas tidak mendukung)Melihat! Lai Lai
Tidak peduli ke arah mana Anda memulai server, jika lingkungan yang berjalan Anda adalah JDK 9+ atau lebih, disarankan untuk menambahkan parameter JVM berikut saat startup untuk memastikan operasi yang berhasil.
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
--add-opens java.base/java.net=ALL-UNNAMED
--add-opens java.management/sun.management=ALL-UNNAMED
Jalankan JVMM.Jar dan pilih Lampirkan Mode
java -jar jvmm.jar -m attach -c ./jvmm.ymlMaka Anda akan diminta untuk memilih jumlah proses target. Setelah memilih, server akan dimulai dalam proses target.
Jika Anda sudah mengetahui PID dari proses target, Anda dapat menentukannya secara langsung:
java -jar jvmm.jar -m attach -c ./jvmm.yml -pid 80080
Dalam metode agen java, Anda perlu membuat paket jar yang diperlukan dan menggunakan parameter -a untuk menentukan agent pembuatan:
# 如果你的宿主程序中包含了 SLF4J 的实现(例如 logback),需要在生成时使用 -e 参数排除掉jvmm自带的 slf4j 实现
java -jar jvmm.jar -m jar -a -e logger
# 如果你的宿主程序中没有 SLF4J 的实现,无需排除 logger
java -jar jvmm.jar -m jar -a Setelah eksekusi, file yang sesuai akan dihasilkan di direktori level yang sama: jvmm-agent.jar , dan kemudian parameter -javaagent ditambahkan saat memulai program target (dengan asumsi itu adalah app.jar). Formatnya adalah sebagai berikut:
java -javaagent:<jvmm-agent.jar路径>=config=<jvmm.yml路径> -jar your-app.jar
Misalnya:
java -javaagent:/path/jvmm-agent.jar=config=/path/jvmm.yml -jar app.jarAgar kompatibel dengan fungsionalitas menggunakan server eksternal, format JavaAgent lengkap adalah:
-javaagent:<jvmm-agent.jar路径>=server=<jvmm-server.jar路径>;config=<jvmm.yml路径>
Saat program Anda dimulai, JVMM akan dimulai sebagai agen

Jika Anda tidak ingin dilampirkan ke program host apa pun, Anda dapat memilih untuk memulai server JVMM secara terpisah, seperti dalam skenario pemantauan mesin fisik.
Pertama, Anda perlu menghasilkan ketergantungan JAR yang dimulai dan menggunakan parameter -s untuk menentukan server pembuatan:
java -jar jvmm.jar -s Setelah eksekusi selesai, jvmm-server.jar akan dihasilkan di direktori yang sama, dan kemudian server akan dimulai. Harap perhatikan versi JDK Anda saat memulai.
# 启动server,jdk 8使用下面命令
java -jar jvmm-server.jar
# jdk 9+ 为确保成功运行建议使用下面命令
java -jar --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
--add-opens java.base/java.net=ALL-UNNAMED
--add-opens java.management/sun.management=ALL-UNNAMED
jvmm-server.jarJika Anda ingin menggunakan server di proyek Anda, Anda harus terlebih dahulu memperkenalkan dependensi Maven
< dependencies >
< dependency >
< groupId >io.github.tzfun.jvmm</ groupId >
< artifactId >jvmm-server</ artifactId >
< version >${jvmm-version}</ version >
</ dependency >
<!-- jvmm日志依赖,如果你的项目中有 SLF4J、Log4J2、Log4J中任意一个依赖,可以去掉此依赖 -->
< dependency >
< groupId >io.github.tzfun.jvmm</ groupId >
< artifactId >jvmm-logger</ artifactId >
< version >${jvmm-version}</ version >
</ dependency >
</ dependencies >Mulai server dengan satu baris kode
import org . beifengtz . jvmm . server . ServerBootstrap ;
public class Jvmm {
public static void main ( String [] args ) {
ServerBootstrap . getInstance (). start ();
}
} Tentu saja, metode startup di atas akan menggunakan konfigurasi default, dan umumnya memerlukan konfigurasi khusus. Metode getInstance dapat masuk ke objek org.beifengtz.jvmm.server.entity.conf.Configuration . Konfigurasi khusus dapat diimplementasikan dengan membangun konfigurasi.
Hubungkan Server JVMM ServerConveyDemo.java menggunakan JVMMConnector
Ketika server dimulai dalam mode jvmm atau http , Anda dapat memanggil antarmuka bawaan dari jarak jauh.

Layanan JVMM menyediakan antarmuka API berikut:
| Jenis | Data | Keterangan |
|---|---|---|
| Jvmm_collect_sys_info | / | Kumpulkan Informasi Sistem Operasi |
| Jvmm_collect_sys_memory_info | / | Kumpulkan data memori sistem operasi |
| Jvmm_collect_sys_file_info | / | Kumpulkan Data Penggunaan Partisi Partisi Sistem Operasi |
| Jvmm_collect_process_info | / | Kumpulkan Data Proses Saat Ini |
| Jvmm_collect_disk_info | / | Kumpulkan data disk mesin fisik |
| Jvmm_collect_disk_io_info | / | Kumpulkan Disk IO dan Data Throughput dari Mesin Fisik |
| Jvmm_collect_cpu_info | / | Kumpulkan data beban CPU dari mesin fisik |
| Jvmm_collect_network_info | / | Kumpulkan Informasi Kartu Jaringan Mesin Fisik dan Data IO |
| Jvmm_collect_port_status | Jsonarray, yang elemennya adalah nomor port | Kumpulkan penggunaan port mesin fisik |
| Jvmm_collect_jvm_classloading_info | / | Kumpulkan informasi pemuatan kelas JVM |
| Jvmm_collect_jvm_classloader_info | / | Kumpulkan Informasi Loader Kelas JVM |
| Jvmm_collect_jvm_compilation_info | / | Kumpulkan informasi kompilasi JVM |
| Jvmm_collect_jvm_gc_info | / | Kumpulkan informasi pengumpul sampah JVM |
| Jvmm_collect_jvm_memory_manager_info | / | Kumpulkan Informasi Manajer Memori JVM |
| Jvmm_collect_jvm_memory_pool_info | / | Kumpulkan informasi kumpulan memori JVM |
| Jvmm_collect_jvm_memory_info | / | Kumpulkan penggunaan memori JVM |
| Jvmm_collect_jvm_thread_info | / | Kumpulkan statistik utas JVM |
| Jvmm_collect_jvm_thread_stack | Lihat ThreadInfodto | Kumpulkan data tumpukan utas JVM yang ditentukan |
| Jvmm_collect_jvm_thread_detail | Jsonarray, yang elemennya adalah ID utas | Kumpulkan detail utas JVM (waktu CPU, waktu blok, kunci, dll.) |
| Jvmm_collect_jvm_thread_pool | JsonObject, propertinya adalah: ClassLoadERHash (String), Clazz (String), InstanceField (String), Field (String) | Kumpulkan informasi kumpulan utas JVM |
| Jvmm_collect_jvm_thread_ordered_cpu_time | JsonObject, propertinya adalah: type (string, stack | info), durationseconds (int) | Akuisisi penggunaan CPU di utas JVM dalam waktu tertentu |
| Jvmm_collect_jvm_dump_thread | / | buang semua data tumpukan utas |
| Jvmm_collect_batch | CollectionType [] | Pengumpulan data dalam batch berdasarkan opsi |
| Jvmm_execute_gc | / | Jalankan GC |
| Jvmm_execute_java_process | / | Buat daftar semua proses java |
| Jvmm_execute_jvm_tool | Rangkaian | Jalankan perintah alat JVM |
| Jvmm_execute_jad | JsonObject, propertinya adalah: classname (string), methodName (string) | Dekompilasi kode (hanya agen yang didukung) |
| Jvmm_execute_load_patch | Jsonarray, yang elemennya patchdto | Kode pembaruan panas. Saat menentukan hash dari ClassLoader, itu hanya pembaruan panas untuk mengubah kelas yang dimuat oleh ClassLoader. |
| Jvmm_execute_switches_get | / | Dapatkan informasi sakelar akuisisi |
| Jvmm_execute_switches_set | JsonObject, propertinya adalah: nama (sakelar []), terbuka (boolean) | Atur sakelar akuisisi |
| Jvmm_profiler_sample | Lihat Profilersampledto | Menghasilkan peta api |
| Jvmm_profiler_execute | Rangkaian | Jalankan Perintah Profiler, lihat Async-Profiler |
| Jvmm_profiler_start | Lihat Profilersampledto, di mana hanya eventcounterinteval yang valid | Jalankan Perintah Pengambilan Sampel Mulai Profiler |
| Jvmm_profiler_stop | String, bidang format di Profilersampledto, nilai opsional adalah htmltxtjfr | Jalankan profiler untuk mengakhiri perintah pengambilan sampel dan ekspor file |
| Jvmm_profiler_status | / | Dapatkan status profiler saat ini |
| Jvmm_profiler_list_events | / | Dapatkan acara profiler yang didukung oleh lingkungan saat ini |
| Jvmm_server_shutdown | Rangkaian | Tutup Layanan, Data adalah Jenis Layanan |

Layanan HTTP menyediakan antarmuka API berikut:
| Uri | metode | parameter | Tubuh | menggambarkan |
|---|---|---|---|---|
| /mengumpulkan/memproses | MENDAPATKAN | / | / | Kumpulkan informasi proses |
| /Kumpulkan/Disk | MENDAPATKAN | / | / | Kumpulkan data disk mesin fisik |
| /Kumpulkan/Disk_io | MENDAPATKAN | / | / | Kumpulkan Disk IO dan Data Throughput dari Mesin Fisik |
| /Kumpulkan/CPU | MENDAPATKAN | / | / | Kumpulkan data beban CPU dari mesin fisik |
| /mengumpulkan/jaringan | MENDAPATKAN | / | / | Kumpulkan Informasi Kartu Jaringan Mesin Fisik dan Data IO |
| /mengumpulkan/sys | MENDAPATKAN | / | / | Kumpulkan Informasi Sistem Operasi |
| /mengumpulkan/sys/memori | MENDAPATKAN | / | / | Kumpulkan data memori sistem operasi |
| /mengumpulkan/sys/file | MENDAPATKAN | / | / | Kumpulkan Data Penggunaan Partisi Partisi Sistem Operasi |
| /mengumpulkan/port | MENDAPATKAN | port (int []) | / | Akuisisi pekerjaan pelabuhan sistem operasi |
| /mengumpulkan/jvm/classloading | MENDAPATKAN | / | / | Kumpulkan informasi pemuatan kelas JVM |
| /Kumpulkan/JVM/ClassLoader | MENDAPATKAN | / | / | Kumpulkan Informasi Loader Kelas JVM |
| /Kumpulkan/JVM/Kompilasi | MENDAPATKAN | / | / | Kumpulkan informasi kompilasi JVM |
| /Kumpulkan/JVM/GC | MENDAPATKAN | / | / | Kumpulkan informasi pengumpul sampah JVM |
| /kumpulkan/jvm/memory_manager | MENDAPATKAN | / | / | Kumpulkan Informasi Manajer Memori JVM |
| /Kumpulkan/JVM/Memory_pool | MENDAPATKAN | / | / | Kumpulkan informasi kumpulan memori JVM |
| /mengumpulkan/JVM/memori | MENDAPATKAN | / | / | Kumpulkan penggunaan memori JVM |
| /Kumpulkan/JVM/Thread | MENDAPATKAN | / | / | Kumpulkan statistik utas JVM |
| /COLLEK/JVM/Thread_Stack | POS | / | Lihat ThreadInfodto | Kumpulkan data tumpukan utas JVM yang ditentukan |
| /Kumpulkan/JVM/DUMP_THREAD | MENDAPATKAN | / | / | buang semua data tumpukan utas |
| /kumpulkan/jvm/thread_ordered_cpu_time | MENDAPATKAN | ketik (string, stack | info), durationseconds (int) | / | Akuisisi penggunaan CPU di utas JVM dalam waktu tertentu |
| /kumpulkan/jvm/thread_detail | MENDAPATKAN | id (long []) | / | Kumpulkan detail utas JVM (waktu CPU, waktu blok, kunci, dll.) |
| /kumpulkan/jvm/thread_pool | MENDAPATKAN | ClassLoadERHash (String), Clazz (String), InstanceField (String), Field (String) | / | Kumpulkan informasi kumpulan utas JVM |
| /mengumpulkan/by_options | MENDAPATKAN | Opsi (CollectionType []) | Pengumpulan data dalam batch berdasarkan opsi | |
| /Jalankan/GC | MENDAPATKAN | / | / | Jalankan GC |
| /Jalankan/JPS | MENDAPATKAN | / | / | Cantumkan semua proses java |
| /Execute/jvm_tool | POS | / | perintah (string) | Jalankan perintah alat JVM |
| /Execute/Jad | MENDAPATKAN | classname (string), methodName (string) | / | Dekompilasi kode (hanya agen yang didukung) |
| /Execute/Load_Patch | POS | / | Jsonarray, yang elemennya patchdto | Kode pembaruan panas. Saat menentukan hash dari ClassLoader, itu hanya pembaruan panas untuk mengubah kelas yang dimuat oleh ClassLoader. |
| /Execute/get_switches | MENDAPATKAN | / | / | Dapatkan informasi sakelar akuisisi |
| /Execute/set_switches | MENDAPATKAN | Nama (sakelar []), buka (boolean) | / | Atur sakelar akuisisi |
| /Profiler/flame_graph | POS | / | Lihat Profilersampledto | Menghasilkan peta api |
| /profiler/mulai | POS | / | Lihat Profilersampledto, di mana hanya eventcounterinteval yang valid | Jalankan Perintah Pengambilan Sampel Mulai Profiler |
| /profiler/berhenti | POS | / | String, bidang format di Profilersampledto, nilai opsional adalah htmltxtjfr | Jalankan profiler untuk mengakhiri perintah pengambilan sampel dan ekspor file |
| /profiler/status | MENDAPATKAN | / | / | Dapatkan status profiler saat ini |
| /Profiler/List_events | MENDAPATKAN | / | / | Dapatkan acara profiler yang didukung oleh lingkungan saat ini |
| /Profiler/Eksekusi | POS | / | perintah (string) | Jalankan Perintah Profiler, lihat Async-Profiler |
| /server/shutdown | MENDAPATKAN | target (string) | / | Tutup Layanan, Data adalah Jenis Layanan |

Logika operasi mode sentinel adalah untuk secara teratur mengumpulkan item data yang ditentukan dan kemudian mendorongnya ke pelanggan . Anda perlu menyediakan layanan berlangganan (antarmuka http) yang dapat menerima data. Jika akses antarmuka memerlukan otentikasi identitas, antarmuka HTTP pelanggan saat ini hanya mendukung otentikasi dasar .
Konfigurasi mode sentinel
server :
type : sentinel
sentinel :
- subscribers :
# publish jvmm data to custom http server
- type : http
url : http://127.0.0.1:9999/monitor/subscriber
auth :
enable : true
username : 123456
password : 123456
# publish jvmm data to prometheus
- type : prometheus
url : http://127.0.0.1:9090/api/v1/write
auth :
enable : true
username : 123456
password : 123456
interval : 15
tasks :
- process
- disk
- disk_io
- cpu
- port
...Total item koleksi berikut didukung:
[
" process " ,
" disk " ,
" disk_io " ,
" cpu " ,
" network " ,
" sys " ,
" sys_memory " ,
" sys_file " ,
" port " ,
" jvm_classloading " ,
" jvm_classloader " ,
" jvm_compilation " ,
" jvm_gc " ,
" jvm_memory " ,
" jvm_memory_manager " ,
" jvm_memory_pool " ,
" jvm_thread " ,
" jvm_thread_stack " ,
" jvm_thread_detail " ,
" jvmm_thread_pool "
]Saat ini hanya item koleksi berikut yang mendukung Prometheus
[
" process " ,
" disk_io " ,
" cpu " ,
" network " ,
" sys " ,
" sys_memory " ,
" sys_file " ,
" jvm_classloading " ,
" jvm_compilation " ,
" jvm_gc " ,
" jvm_memory " ,
" jvm_memory_pool " ,
" jvm_thread "
]JVMM menyediakan dua dashboard Template Grafana, yaitu: Node dan JVM
Templat node adalah kumpulan item pemantauan terkait sistem, yang dapat membantu Anda lebih fokus pada pemantauan data mesin fisik atau host cloud.


Metode Impor: Impor ID Dasbor 20430 atau impor Dashboard-node.json
Untuk bekerja sama dengan template ini, tugas -tugas berikut perlu dikonfigurasi:
[
" process " ,
" disk_io " ,
" cpu " ,
" network " ,
" sys " ,
" sys_memory " ,
" sys_file "
]Template JVM adalah kumpulan item pemantauan terkait JVM, yang dapat membantu Anda lebih fokus pada data pemantauan proses.


Metode Impor: Impor ID Dasbor 20429 atau Impor Dashboard-JVM.JSON
Untuk bekerja sama dengan template ini, tugas -tugas berikut perlu dikonfigurasi:
[
" process " ,
" jvm_classloading " ,
" jvm_compilation " ,
" jvm_gc " ,
" jvm_memory " ,
" jvm_memory_pool " ,
" jvm_thread "
]Jika Anda ingin mengembangkan sekunder berdasarkan JVMM, Anda hanya perlu memperkenalkan ketergantungan inti
< dependency >
< groupId >io.github.tzfun.jvmm</ groupId >
< artifactId >jvmm-core</ artifactId >
< version >${jvmm-version}</ version >
</ dependency > Semua antarmuka fungsional akuisisi data yang disediakan oleh server sebelumnya dan antarmuka fungsional lainnya yang tidak menyediakan antarmuka panggilan jarak jauh dapat diperoleh melalui kelas pabrik: org.beifengtz.jvmm.core.JvmmFactory
public class Jvmm {
public static void main ( String [] args ) {
// 提供所有的数据采集接口
JvmmCollector collector = JvmmFactory . getCollector ();
// 提供所有的执行接口
JvmmExecutor executor = JvmmFactory . getExecutor ();
// 提供火焰图生成器
JvmmProfiler profiler = JvmmFactory . getProfiler ();
}
}Alat Klien JVMM menyediakan cara sederhana dan cepat untuk memanggil JVMM dari jarak jauh. Tentu saja, ia juga melakukan fungsi -fungsi penting seperti melampirkan server dan menghasilkan stoples ketergantungan.
Alat klien menyediakan fungsi eksekusi perintah Bootstrap, dan akan dieksekusi pertanyaan bahkan jika Anda tidak mengambil parameter apa pun. Untuk penggunaan tertentu, silakan gunakan perintah berikut untuk melihat dokumen bantuan:
java -jar jvmm.jar -hContoh Akuisisi Data oleh Alat Klien
Menghasilkan contoh diagram api

Contoh panggilan kode
Contoh Aplikasi Dasbor Kustom

Beberapa komponen di dalam proyek dapat digunakan tanpa proyek, ringan dan mudah digunakan
Alasannya adalah bahwa lingkungan Anda tidak memiliki alat JDK atau variabel lingkungan tidak dikonfigurasi. Pastikan lingkungan Anda diinstal dengan JDK, bukan hanya JRE. Verifikasi Sederhana: Jalankan jps -l di lingkungan Anda, dan jika dapat dieksekusi secara normal dan menghasilkan hasilnya, itu berarti lingkungannya OK.
Solusi: Mengkonfigurasi direktori jdk bin lokal Anda sebagai variabel lingkungan
Jika Anda memulai jvmm-server.jar, alasannya adalah Anda menggunakan JDK 9 ke atas, Java melarang akses reflektif ke beberapa kelas yang dimulai dengan JDK 9+.
java.lang.reflect.InaccessibleObjectException: Unable to make field final jdk.internal.loader.URLClassPath jdk.internal.loader.ClassLoaders$AppClassLoader.ucp accessible: module java.base does not "opens jdk.internal.loader" to unnamed module @2d127a61
Solusi: Tambahkan parameter mesin virtual berikut
# JDK 9+ 为确保成功运行建议设置以下几个虚拟机参数
# --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
# --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
# --add-opens java.base/java.net=ALL-UNNAMED
# --add-opens java.management/sun.management=ALL-UNNAMED
java -jar --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
--add-opens java.base/java.net=ALL-UNNAMED
--add-opens java.management/sun.management=ALL-UNNAMED
jvmm-server.jar ./jvmm.yml Jika Anda meminta No access to perf events. Try --fdtransfer or --all-user option or 'sysctl kernel.perf_event_paranoid=1' , alasannya adalah bahwa kernel sistem melarang deteksi kinerja sistem secara default, dan Anda perlu mengaktifkan opsi ini.
sudo systcl -w kernel.perf_event_paranoid=1Atau memodifikasi file sysctl
sudo sh -c ' echo "kernel.perf_event_paranoid=1" >> /etc/sysctl.conf '
sudo sysctl -pAlat ini sepenuhnya open source dan gratis, dan tidak mudah untuk dibuat. Jika menurut Anda itu bagus, Anda dapat menyumbang untuk mendukung proyek ini.
Daftar Donasi:
Jika Anda mengalami masalah selama penggunaan, atau memiliki wawasan atau saran yang unik tentang proyek ini, silakan kirimkan masalah atau kirim pesan pribadi kepada saya
Email: [email protected]
WeChat: Beifeng-tz (Harap perhatikan JVMM jika Anda menambahkannya)