JAVAメモリ分析:メモリとCPUの分析およびガベージコレクションにJDK独自のツールを使用します
JAVAメモリ分析1:ダンプメモリオーバーフロースナップショット分析に基づく
JAVAメモリ分析2:JVMメモリ使用量を表示するためのアイデア統合jprofiler
JAVAメモリ分析3:メモリとCPUの分析およびガベージコレクションにJDK組み込みツールを使用する
前書き
私の最後の2つの記事に従って、メモリとCPU分析にjprofilerツールを使用してください
JAVAメモリ分析:ダンプメモリオーバーフロースナップショット分析に基づく
JAVAメモリ分析:JVMメモリ使用量を表示するための統合jprofilerのアイデア
は、分析のためにjprofilerをダウンロードする必要があります。JDKに付属のツールを使用して分析できるかどうかを簡単に考えてください。この記事は、JDKに付属のツールjconsole.exeを使用してメモリとCPUを分析し、それに付属のツールを使用して分析することに基づいています。 GCリカバリ。
テキスト
ステップ
1.分析例のローカルプログラムを
実行します2.jconsole.exeを実行します3.JVM
のメモリとCPU使用率を表示します
4.実行中のプログラムにデータを送信し、データ処理をシミュレートします
5.組み込みツールを使用してGCリカバリを実行します
1.プログラムを実行します
前の2つの記事のコード例は、サーバープログラムを実行します。ここで実行されるプログラムは、rabbitMQによって監視されるコンシューマープログラムです。SpringBoot、SpringMVCプログラムを自分で作成し、データを要求するためのコントローラーインターフェイスを提供することもできます。メモリ使用量を観察するための入り口。
package com.cdzg.rabbit.rabbitmqprovider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RabbitmqProviderApplication {
public static void main(String[] args) {
SpringApplication.run(RabbitmqProviderApplication.class, args);
}
}
2.jconsole.exeツールを開きます
私のJDKはディスクDのjavaディレクトリの下にインストールされている
ので、最初にディレクトリD:\ java \ jdk1.8.0_211 \ binに入り
ます。図から、実行しようとしているjconsole.exeプログラムとそのサイズわずか17KBで、実際には非科学的です。17KBの実行プログラムは、HeDeがUIインターフェイスを監視する方法です。
その背後にある実際のサポートは、図に示すようにtool.jarのjarパッケージです。
3.jconsole.exeを実行します
今、私たちはexeを実行します
写真から、ローカルアイデアで実行しているプログラムを確認できます。次に、プログラムを選択して[接続]をクリックします。
次のインターフェイスが表示されます。
このインターフェイスは、5分間実行した後のプログラムのスクリーンショットです。このツールから、メモリ、CPU、スレッド、およびその他の使用状況を分析できます。
4.ここでも、プログラムを実行するために1000個のメッセージを送信します
package com.cdzg.rabbit.rabbitmqconsumer;
import com.cdzg.rabbit.rabbitmqconsumer.mq.RabbitConfig;
import com.cdzg.rabbit.rabbitmqconsumer.service.TestSendDlxProducer;
import com.cdzg.rabbit.rabbitmqconsumer.service.TestSendProducer;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class RabbitmqConsumerApplicationTests {
@Autowired
private TestSendProducer testSendProducer;
@Autowired
private TestSendDlxProducer testSendDlxProducer;
@Test
void contextLoads() {
}
@Test
public void testSend() throws InterruptedException {
for (int i = 0; i < 1000; i++) {
testSendProducer.sendMsg("你好,打工人!" + i);
}
Thread.sleep(2000);
}
@Test
public void testSendMore() throws InterruptedException {
testSendProducer.sendMsg(RabbitConfig.CDZG_MOONL_MORE_EXCHANGE, RabbitConfig.CDZG_MOONL_MORE_ROUTINGKEY, "多队列,你好,打工人!");
Thread.sleep(2000);
}
@Test
public void testSendDlx() throws InterruptedException {
for (int i = 0; i < 3; i++) {
testSendDlxProducer.sendDlxMsg("延时你好,打工人!" + i, "3000");
}
Thread.sleep(2000);
}
}
上の図から、CPU使用率が0.2%から1%に急上昇し、その他の指標が改善していることがわかります。
5.ツールに付属のGCリカバリ機能を使用します
GC回復前
GCリカバリが実行された後、メモリが100Mb以上から20Mb以上に低下したことがはっきりとわかります。
追記
これで、JDK、jConsoleに付属のツールを使用して、JVMメモリ、CPU、スレッドなどの使用状況を照会および回復しました。
実際の開発プロセスでは、JVMチューニングを実行する場合は、このメソッドを参照して、メモリ、CPU、スレッドなどを分析できます。
みんなに注目してもらいたいです
詳細については、私の個人の公式アカウントをフォローしてください
公のアカウントで、乾物でいっぱいの面接官を吊るす方法に関する私の同僚の一連の記事を共有してください