본문 바로가기

Dev/기타

VisualVM을 이용한 JVM 모니터링

로직

1. VisualVM 설치 (VMX port 추가해서 WSL과 연결)
2. 연결된 참조가 없는 데이터들을 무한 대량 생성
3. 가비지 컬렉션이 작동 X
4. 힙 영역이 다 차면서 프로그램 종료

 

Code

import com.beust.jcommander.JCommander;
import com.beust.jcommander.ParameterException;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {
    static class Sample{
        String name;
        public Sample(String name) {
            this.name = name;
        }

        public void Sample(String name){
            this.name = name;
        }
    }

    public static void main(String args[]){

        Args param = new Args();
        JCommander jCommander = new JCommander(param);

        try{
            jCommander.parse(args);
            String profile = param.getProfile();

            List<List<Sample>> sampleList = new ArrayList<>();

            while(true){
                try{
                    Thread.sleep(1000);
                    ArrayList tempList = new ArrayList<Sample>(10000000);
                    tempList.add(new Sample(profile));
                    sampleList.add(tempList);
                }catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }


        }catch (ParameterException e){
            JCommander.getConsole().println(e.toString());
            jCommander.usage();
        }
    }
}

 

WSL 명령어

java -verbose:gc -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=3030 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -cp HelloWorld2.main.jar HelloWorld --profile 지연

 

실행 결과

1) Local

2) WSL

 

VisualVM 결과

 

 

 

 

 

 

'Dev > 기타' 카테고리의 다른 글

[gRPC] 개념 정리  (0) 2022.01.25
Armeria의 서킷 브레이커  (0) 2022.01.17
Jib 예제 따라하기  (0) 2021.08.09
Spark 성능 테스트  (0) 2021.08.09
[명품자바프로그래밍] 12장 실습문제 8번  (0) 2020.10.17