본문 바로가기

카테고리 없음

jvm 살짝 보기

jvm에는

 

 

 

스레드별로 PC register, Stack ,Native Method Stack이 있고

공용 메모리로는 Heap, Method Area가 있다.

 

공용 메모리는 이해가 됐다 heap이랑 소스코드 method area가 있겠지

스레드별로 stack이 있는건 이해되는데 왜 따로 native method stack이라는게 있는지 어떻게 있는지 애매했다.

gdb로 봐봤다.

 

java -Djava.library.path=. MyLibrary 라이브러리 위치 정해주고 실행

 

 

418800000-457000000 rw-p 00000000 00:00 0 
457000000-7ff800000 ---p 00000000 00:00 0 
7ff800000-7ff908000 rw-p 00ced000 103:0a 17185179                        /usr/lib/jvm/java-21-openjdk-amd64/lib/server/classes.jsa
7ff908000-800000000 rw-p 00000000 00:00 0 
5feb14773000-5feb14774000 r--p 00000000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5feb14774000-5feb14775000 r-xp 00001000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5feb14775000-5feb14776000 r--p 00002000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5feb14776000-5feb14777000 r--p 00002000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5feb14777000-5feb14778000 rw-p 00003000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5feb1631a000-5feb16361000 rw-p 00000000 00:00 0                          [heap]
7608dc000000-7608dc021000 rw-p 00000000 00:00 0 
7608dc021000-7608e0000000 ---p 00000000 00:00 0 
7608e0000000-7608e0021000 rw-p 00000000 00:00 0 
7608e0021000-7608e4000000 ---p 00000000 00:00 0 
7608e8000000-7608e8034000 rw-p 00000000 00:00 0 
7608e8034000-7608ec000000 ---p 00000000 00:00 0 
7608ec000000-7608ec05f000 rw-p 00000000 00:00 0 
7608ec05f000-7608f0000000 ---p 00000000 00:00 0 
7608f4000000-7608f4021000 rw-p 00000000 00:00 0 
7608f4021000-7608f8000000 ---p 00000000 00:00 0 
7608f8000000-7608f8021000 rw-p 00000000 00:00 0 
7608f8021000-7608fc000000 ---p 00000000 00:00 0 
760900000000-760900021000 rw-p 00000000 00:00 0 
760900021000-760904000000 ---p 00000000 00:00 0 
760904000000-760904021000 rw-p 00000000 00:00 0 
760904021000-760908000000 ---p 00000000 00:00 0 
76090c000000-76090c021000 rw-p 00000000 00:00 0 
76090c021000-760910000000 ---p 00000000 00:00 0 
760910000000-760910021000 rw-p 00000000 00:00 0 
760910021000-760914000000 ---p 00000000 00:00 0 
760918000000-760918020000 rw-p 00000000 00:00 0 
760918020000-760918400000 ---p 00000000 00:00 0 
760918400000-760918410000 rw-p 00000000 00:00 0 
760918410000-76091c000000 ---p 00000000 00:00 0 
76091c000000-76091c021000 rw-p 00000000 00:00 0 
76091c021000-760920000000 ---p 00000000 00:00 0 
760923000000-760923cae000 rw-p 00001000 103:0a 17185179                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/classes.jsa
760923cae000-760924000000 ---p 00000000 00:00 0 
760924000000-760924010000 rw-p 00000000 00:00 0 
760924010000-760924040000 ---p 00000000 00:00 0 
760924040000-760924050000 rw-p 00000000 00:00 0 
760924050000-760964000000 ---p 00000000 00:00 0 
760964000000-760964021000 rw-p 00000000 00:00 0 
760964021000-760968000000 ---p 00000000 00:00 0 
760968000000-760968021000 rw-p 00000000 00:00 0 
760968021000-76096c000000 ---p 00000000 00:00 0 
760970000000-760970021000 rw-p 00000000 00:00 0 
760970021000-760974000000 ---p 00000000 00:00 0 
760974000000-760974021000 rw-p 00000000 00:00 0 
760974021000-760978000000 ---p 00000000 00:00 0 
760979000000-760979f36000 r--p 00000000 103:0a 16517754                  /usr/lib/locale/locale-archive
76097a000000-76097c021000 rw-p 00000000 00:00 0 
76097c021000-760980000000 ---p 00000000 00:00 0 
760980d00000-760980d04000 ---p 00000000 00:00 0 
760980d04000-760980e00000 rw-p 00000000 00:00 0 
760980e00000-760981da0000 rw-p 00000000 00:00 0 
760981da0000-7609907c0000 ---p 00000000 00:00 0 
7609907c0000-7609907e0000 rw-p 00000000 00:00 0 
760990800000-7609909f4000 rw-p 00000000 00:00 0 
7609909f4000-760992738000 ---p 00000000 00:00 0 
760992738000-76099273c000 rw-p 00000000 00:00 0 
760992800000-7609929f4000 rw-p 00000000 00:00 0 
7609929f4000-760994738000 ---p 00000000 00:00 0 
760994738000-76099473c000 rw-p 00000000 00:00 0 
760994800000-760994a70000 rwxp 00000000 00:00 0 
760994a70000-76099bc5f000 ---p 00000000 00:00 0 
76099bc5f000-76099becf000 rwxp 00000000 00:00 0 
76099becf000-76099c3a0000 ---p 00000000 00:00 0 
76099c3a0000-76099c610000 rwxp 00000000 00:00 0 
76099c610000-7609a3800000 ---p 00000000 00:00 0 
7609a3800000-7609abe02000 r--s 00000000 103:0a 17185176                  /usr/lib/jvm/java-21-openjdk-amd64/lib/modules
7609abe2f000-7609abe33000 ---p 00000000 00:00 0 
7609abe33000-7609abf2f000 rw-p 00000000 00:00 0 
7609abf2f000-7609abf34000 r--p 00000000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7609abf34000-7609abf75000 r-xp 00005000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7609abf75000-7609abffe000 r--p 00046000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7609abffe000-7609abfff000 r--p 000ce000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7609abfff000-7609ac000000 rw-p 000cf000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7609ac000000-7609ac16e000 rw-p 00000000 00:00 0 
7609ac16e000-7609b0000000 ---p 00000000 00:00 0 
7609b002f000-7609b0033000 ---p 00000000 00:00 0 
7609b0033000-7609b012f000 rw-p 00000000 00:00 0 
7609b012f000-7609b0133000 ---p 00000000 00:00 0 
7609b0133000-7609b022f000 rw-p 00000000 00:00 0 
7609b022f000-7609b0233000 ---p 00000000 00:00 0 
7609b0233000-7609b032f000 rw-p 00000000 00:00 0 
7609b032f000-7609b0333000 ---p 00000000 00:00 0 
7609b0333000-7609b042f000 rw-p 00000000 00:00 0 
7609b042f000-7609b0433000 ---p 00000000 00:00 0 
7609b0433000-7609b052f000 rw-p 00000000 00:00 0 
7609b052f000-7609b0533000 ---p 00000000 00:00 0 
7609b0533000-7609b062f000 rw-p 00000000 00:00 0 
7609b062f000-7609b0633000 ---p 00000000 00:00 0 
7609b0633000-7609b072f000 rw-p 00000000 00:00 0 
7609b072f000-7609b0730000 ---p 00000000 00:00 0 
7609b0730000-7609b0830000 rw-p 00000000 00:00 0 
7609b0830000-7609b0831000 ---p 00000000 00:00 0 
7609b0831000-7609b0931000 rw-p 00000000 00:00 0 
7609b0931000-7609b0a0d000 rw-p 00000000 00:00 0 
7609b0a0d000-7609b0a0e000 ---p 00000000 00:00 0 
7609b0a0e000-7609b0b0e000 rw-p 00000000 00:00 0 
7609b0b0e000-7609b0b0f000 ---p 00000000 00:00 0 
7609b0b0f000-7609b0c0f000 rw-p 00000000 00:00 0 
7609b0c0f000-7609b1b1e000 rw-p 00000000 00:00 0 
7609b1b1e000-7609b1b1f000 ---p 00000000 00:00 0 
7609b1b1f000-7609b1c1f000 rw-p 00000000 00:00 0 
7609b1c1f000-7609b1c20000 ---p 00000000 00:00 0 
7609b1c20000-7609b1d20000 rw-p 00000000 00:00 0 
7609b1d20000-7609b1d21000 ---p 00000000 00:00 0 
7609b1d21000-7609b1e21000 rw-p 00000000 00:00 0 
7609b1e21000-7609b2e33000 rw-p 00000000 00:00 0 
7609b2e33000-7609b2f17000 ---p 00000000 00:00 0 
7609b2f17000-7609b2f1c000 rw-p 00000000 00:00 0 
7609b2f1c000-7609b3000000 ---p 00000000 00:00 0 
7609b3000000-7609b309d000 r--p 00000000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7609b309d000-7609b31dd000 r-xp 0009d000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7609b31dd000-7609b326b000 r--p 001dd000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7609b326b000-7609b3276000 r--p 0026b000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7609b3276000-7609b3279000 rw-p 00276000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7609b3279000-7609b327d000 rw-p 00000000 00:00 0 
7609b3280000-7609b3300000 rw-p 00000000 00:00 0 
7609b3300000-7609b3304000 ---p 00000000 00:00 0 
7609b3304000-7609b3400000 rw-p 00000000 00:00 0 
7609b3400000-7609b3696000 r--p 00000000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7609b3696000-7609b44fe000 r-xp 00296000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7609b44fe000-7609b47d1000 r--p 010fe000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7609b47d1000-7609b48a1000 r--p 013d0000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7609b48a1000-7609b48d1000 rw-p 014a0000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7609b48d1000-7609b4937000 rw-p 00000000 00:00 0 
7609b4950000-7609b49d2000 rw-p 00000000 00:00 0 
7609b49d2000-7609b49dc000 ---p 00000000 00:00 0 
7609b49dc000-7609b49e9000 r--p 00000000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7609b49e9000-7609b49f8000 r-xp 0000d000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7609b49f8000-7609b49fd000 r--p 0001c000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7609b49fd000-7609b49fe000 r--p 00021000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7609b49fe000-7609b49ff000 rw-p 00022000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7609b49ff000-7609b4a00000 rw-p 00000000 00:00 0 
7609b4a00000-7609b4a28000 r--p 00000000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7609b4a28000-7609b4bb0000 r-xp 00028000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7609b4bb0000-7609b4bff000 r--p 001b0000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7609b4bff000-7609b4c03000 r--p 001fe000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7609b4c03000-7609b4c05000 rw-p 00202000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7609b4c05000-7609b4c12000 rw-p 00000000 00:00 0 
7609b4c1b000-7609b4c23000 rw-s 00000000 103:0a 17301594                  /tmp/hsperfdata_yeongjae/93041
7609b4c23000-7609b4c27000 r--p 00000000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7609b4c27000-7609b4c4a000 r-xp 00004000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7609b4c4a000-7609b4c4e000 r--p 00027000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7609b4c4e000-7609b4c4f000 r--p 0002b000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7609b4c4f000-7609b4c50000 rw-p 0002c000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7609b4c50000-7609b4c60000 r--p 00000000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7609b4c60000-7609b4cdf000 r-xp 00010000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7609b4cdf000-7609b4d37000 r--p 0008f000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7609b4d37000-7609b4d38000 r--p 000e7000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7609b4d38000-7609b4d39000 rw-p 000e8000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7609b4d39000-7609b4d3b000 rw-p 00000000 00:00 0 
7609b4d3b000-7609b4d3d000 r--p 00000000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7609b4d3d000-7609b4d47000 r-xp 00002000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7609b4d47000-7609b4d4a000 r--p 0000c000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7609b4d4a000-7609b4d4b000 r--p 0000f000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7609b4d4b000-7609b4d4c000 rw-p 00010000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7609b4d4c000-7609b4d4e000 r--p 00000000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7609b4d4e000-7609b4d60000 r-xp 00002000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7609b4d60000-7609b4d66000 r--p 00014000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7609b4d66000-7609b4d67000 r--p 0001a000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7609b4d67000-7609b4d68000 rw-p 0001b000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7609b4d69000-7609b4d6a000 r--p 00000000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7609b4d6a000-7609b4d6b000 r-xp 00001000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7609b4d6b000-7609b4d6c000 r--p 00002000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7609b4d6c000-7609b4d6d000 r--p 00002000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7609b4d6d000-7609b4d6e000 rw-p 00003000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7609b4d6e000-7609b4d6f000 ---p 00000000 00:00 0 
7609b4d6f000-7609b4d70000 r--p 00000000 00:00 0 
7609b4d70000-7609b4d71000 ---p 00000000 00:00 0 
7609b4d71000-7609b4d73000 r--p 00000000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7609b4d73000-7609b4d76000 r-xp 00002000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7609b4d76000-7609b4d77000 r--p 00005000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7609b4d77000-7609b4d78000 r--p 00006000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7609b4d78000-7609b4d79000 rw-p 00007000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7609b4d79000-7609b4d7b000 rw-p 00000000 00:00 0 
7609b4d7b000-7609b4d7c000 r--p 00000000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7609b4d7c000-7609b4da7000 r-xp 00001000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7609b4da7000-7609b4db1000 r--p 0002c000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7609b4db1000-7609b4db3000 r--p 00036000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7609b4db3000-7609b4db5000 rw-p 00038000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7fff32a87000-7fff32aa8000 rw-p 00000000 00:00 0                          [stack]
7fff32bd4000-7fff32bd8000 r--p 00000000 00:00 0                          [vvar]
7fff32bd8000-7fff32bda000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]

 

#include <stdio.h>

// MyLibrary.c
#include <jni.h>
#include <stdio.h>
#include <unistd.h>
JNIEXPORT void JNICALL Java_MyLibrary_printMessage(JNIEnv *env, jobject obj) {
    void *stackAddress;
    __asm__ volatile ("mov %%rsp, %0" : "=r"(stackAddress)); // x86-64에서 스택 포인터를 가져옴
    printf("Current stack address: %p\n", stackAddress);

        printf("Hello from C Library!\n");
        sleep(2);
}

이걸로 so 라이브러리 만들어서

 

// MyLibrary.java
public class MyLibrary {
    // Load the C library
    static {
        System.loadLibrary("MyLibrary");
    }

    // Declare the native method
    public native void printMessage();

    public static void main(String[] args) {
        MyLibrary myLib = new MyLibrary();
while(true){
               myLib.printMessage(); // Call the native method
  System.out.println("aa");
  try {
                Thread.sleep(3000); // 3초 대기
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

}
}
}

 

jni로 자바에서 c 호출

 

왜냐면 native method stack이 jni같은 java가 아닌 함수 호출할때 쓰인다고 한다.

 

결과는

 

Current stack address: 0x7609b33fe8e0
Hello from C Library!
aa
Current stack address: 0x7609b33fe8e0
Hello from C Library!
aa
Current stack address: 0x7609b33fe8e0
Hello from C Library!
aa

를 반복해서 내는데

gdb로 이 프로세스에 붙어서 backtrace를 보며 스택 위치를 보기로 했다.

 

 Target Id                                           Frame 
* 1    Thread 0x7609b4d39b80 (LWP 93041) "java"            0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=128, cancel=true, abstime=0x0, op=265, 
    expected=93042, futex_word=0x7609b33ff990) at ./nptl/futex-internal.c:57
  2    Thread 0x760980dff6c0 (LWP 93058) "Common-Cleaner"  0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=30217, cancel=true, 
    abstime=0x760980dfe430, op=137, expected=0, futex_word=0x7609ac1681b0) at ./nptl/futex-internal.c:57
  3    Thread 0x7609abf2e6c0 (LWP 93057) "Notification Th" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=30217, cancel=true, abstime=0x0, 
    op=393, expected=0, futex_word=0x7609b4904c78 <mutex_init()::Notification_lock_storage+88>) at ./nptl/futex-internal.c:57
  4    Thread 0x7609b012e6c0 (LWP 93056) "C1 CompilerThre" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=11, cancel=true, 
    abstime=0x7609b012daf0, op=137, expected=0, futex_word=0x7609b49042fc <mutex_init()::MethodCompileQueue_lock_storage+92>) at ./nptl/futex-internal.c:57
  5    Thread 0x7609b022e6c0 (LWP 93055) "C2 CompilerThre" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b022daf0, 
    op=137, expected=0, futex_word=0x7609b49042fc <mutex_init()::MethodCompileQueue_lock_storage+92>) at ./nptl/futex-internal.c:57
  6    Thread 0x7609b032e6c0 (LWP 93054) "Monitor Deflati" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b032dce0, 
    op=137, expected=0, futex_word=0x7609b4904d78 <mutex_init()::MonitorDeflation_lock_storage+88>) at ./nptl/futex-internal.c:57
  7    Thread 0x7609b042e6c0 (LWP 93053) "Service Thread"  0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7609b4904cf8 <mutex_init()::Service_lock_storage+88>) at ./nptl/futex-internal.c:57
  8    Thread 0x7609b052e6c0 (LWP 93052) "Signal Dispatch" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
    abstime=0x0, op=393, expected=0, futex_word=0x5feb1631b550) at ./nptl/futex-internal.c:57
  9    Thread 0x7609b062e6c0 (LWP 93051) "Finalizer"       0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7609ac14f878) at ./nptl/futex-internal.c:57
  10   Thread 0x7609b072e6c0 (LWP 93050) "Reference Handl" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=30217, cancel=true, abstime=0x0, 
    op=393, expected=0, futex_word=0x7609b4902d78 <mutex_init()::Heap_lock_storage+88>) at ./nptl/futex-internal.c:57
  11   Thread 0x7609b082f6c0 (LWP 93049) "VM Thread"       0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b082ed00, 
    op=137, expected=0, futex_word=0x7609b4902b78 <mutex_init()::VMOperation_lock_storage+88>) at ./nptl/futex-internal.c:57
  12   Thread 0x7609b09306c0 (LWP 93048) "VM Periodic Tas" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b092fd20, 
    op=137, expected=0, futex_word=0x7609b4903d78 <mutex_init()::PeriodicTask_lock_storage+88>) at ./nptl/futex-internal.c:57
  13   Thread 0x7609b0b0d6c0 (LWP 93047) "G1 Service"      0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=30217, cancel=true, 
    abstime=0x7609b0b0cd50, op=137, expected=0, futex_word=0x7609ac10bef8) at ./nptl/futex-internal.c:57
  14   Thread 0x7609b0c0e6c0 (LWP 93046) "G1 Refine#0"     0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7609ac10af48) at ./nptl/futex-internal.c:57
  15   Thread 0x7609b1c1e6c0 (LWP 93045) "G1 Conc#0"       0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
    abstime=0x0, op=393, expected=0, futex_word=0x7609ac058898) at ./nptl/futex-internal.c:57
  16   Thread 0x7609b1d1f6c0 (LWP 93044) "G1 Main Marker"  0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7609b49054f8 <mutex_init()::CGC_lock_storage+88>) at ./nptl/futex-internal.c:57
  17   Thread 0x7609b1e206c0 (LWP 93043) "GC Thread#0"     0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
--Type <RET> for more, q to quit, c to continue without paging--
    abstime=0x0, op=393, expected=0, futex_word=0x7609ac046848) at ./nptl/futex-internal.c:57
  18   Thread 0x7609b33ff6c0 (LWP 93042) "java"            0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b33fe770, 
    op=137, expected=0, futex_word=0x7609ac01b978) at ./nptl/futex-internal.c:57

 

이때는 자바의 Thread.sleep에서 멈췄을 때다 이떄의

rsp rbp를 보면

 

rbp            0x7609b33fe680      0x7609b33fe680
rsp            0x7609b33fe640      0x7609b33fe640

 

(gdb) bt
#0  0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b33fe770, op=137, expected=0, futex_word=0x7609ac01b978)
    at ./nptl/futex-internal.c:57
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x7609b33fe770, clockid=0, expected=0, futex_word=0x7609ac01b978) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x7609ac01b978, expected=expected@entry=0, clockid=clockid@entry=1, 
    abstime=abstime@entry=0x7609b33fe770, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007609b4a9bc7e in __pthread_cond_wait_common (abstime=0x7609b33fe770, clockid=1, mutex=0x7609ac01b928, cond=0x7609ac01b950)
    at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_timedwait64 (cond=0x7609ac01b950, mutex=0x7609ac01b928, abstime=0x7609b33fe770) at ./nptl/pthread_cond_wait.c:652
#5  0x00007609b40f5277 in PlatformEvent::park_nanos (nanos=0, this=0x7609ac01b900) at src/hotspot/os/posix/os_posix.cpp:1591
#6  PlatformEvent::park_nanos (this=this@entry=0x7609ac01b900, nanos=nanos@entry=3000000000) at src/hotspot/os/posix/os_posix.cpp:1560
#7  0x00007609b3d22b14 in JavaThread::sleep_nanos (this=this@entry=0x7609ac0192c0, nanos=nanos@entry=3000000000) at src/hotspot/share/runtime/javaThread.cpp:2051
#8  0x00007609b3ddaa51 in JVM_Sleep (env=0x7609ac019678, threadClass=<optimized out>, nanos=3000000000) at src/hotspot/share/prims/jvm.cpp:3066
#9  0x000076099bc6b9c0 in ?? ()
#10 0x00007609b33fe8c8 in ?? ()
#11 0x000076099bc672a8 in ?? ()
#12 0x00007609b33fe880 in ?? ()
#13 0x0000000000000000 in ?? ()

 

bt를 보면 내가 공부한 대로 보면 .cpp인 frame 0~8은 네이티브스택을 사용하고 9~13은 자바 스택을 사용한다.

 

 

아래는 라이브러리의 sleep에서 멈춘 상황

1    Thread 0x7609b4d39b80 (LWP 93041) "java"            0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=128, cancel=true, abstime=0x0, op=265, 
    expected=93042, futex_word=0x7609b33ff990) at ./nptl/futex-internal.c:57
  2    Thread 0x760980dff6c0 (LWP 93058) "Common-Cleaner"  0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=30217, cancel=true, 
    abstime=0x760980dfe430, op=137, expected=0, futex_word=0x7609ac1681b0) at ./nptl/futex-internal.c:57
  3    Thread 0x7609abf2e6c0 (LWP 93057) "Notification Th" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=30217, cancel=true, abstime=0x0, 
    op=393, expected=0, futex_word=0x7609b4904c78 <mutex_init()::Notification_lock_storage+88>) at ./nptl/futex-internal.c:57
  4    Thread 0x7609b012e6c0 (LWP 93056) "C1 CompilerThre" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=11, cancel=true, 
    abstime=0x7609b012daf0, op=137, expected=0, futex_word=0x7609b49042fc <mutex_init()::MethodCompileQueue_lock_storage+92>) at ./nptl/futex-internal.c:57
  5    Thread 0x7609b022e6c0 (LWP 93055) "C2 CompilerThre" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b022daf0, 
    op=137, expected=0, futex_word=0x7609b49042fc <mutex_init()::MethodCompileQueue_lock_storage+92>) at ./nptl/futex-internal.c:57
  6    Thread 0x7609b032e6c0 (LWP 93054) "Monitor Deflati" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b032dce0, 
    op=137, expected=0, futex_word=0x7609b4904d78 <mutex_init()::MonitorDeflation_lock_storage+88>) at ./nptl/futex-internal.c:57
  7    Thread 0x7609b042e6c0 (LWP 93053) "Service Thread"  0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7609b4904cf8 <mutex_init()::Service_lock_storage+88>) at ./nptl/futex-internal.c:57
  8    Thread 0x7609b052e6c0 (LWP 93052) "Signal Dispatch" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
    abstime=0x0, op=393, expected=0, futex_word=0x5feb1631b550) at ./nptl/futex-internal.c:57
  9    Thread 0x7609b062e6c0 (LWP 93051) "Finalizer"       0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7609ac14f878) at ./nptl/futex-internal.c:57
  10   Thread 0x7609b072e6c0 (LWP 93050) "Reference Handl" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=30217, cancel=true, abstime=0x0, 
    op=393, expected=0, futex_word=0x7609b4902d78 <mutex_init()::Heap_lock_storage+88>) at ./nptl/futex-internal.c:57
  11   Thread 0x7609b082f6c0 (LWP 93049) "VM Thread"       0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b082ed00, 
    op=137, expected=0, futex_word=0x7609b4902b78 <mutex_init()::VMOperation_lock_storage+88>) at ./nptl/futex-internal.c:57
  12   Thread 0x7609b09306c0 (LWP 93048) "VM Periodic Tas" 0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7609b092fd20, 
    op=137, expected=0, futex_word=0x7609b4903d78 <mutex_init()::PeriodicTask_lock_storage+88>) at ./nptl/futex-internal.c:57
  13   Thread 0x7609b0b0d6c0 (LWP 93047) "G1 Service"      0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=30217, cancel=true, 
    abstime=0x7609b0b0cd50, op=137, expected=0, futex_word=0x7609ac10bef8) at ./nptl/futex-internal.c:57
  14   Thread 0x7609b0c0e6c0 (LWP 93046) "G1 Refine#0"     0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7609ac10af48) at ./nptl/futex-internal.c:57
  15   Thread 0x7609b1c1e6c0 (LWP 93045) "G1 Conc#0"       0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
    abstime=0x0, op=393, expected=0, futex_word=0x7609ac058898) at ./nptl/futex-internal.c:57
  16   Thread 0x7609b1d1f6c0 (LWP 93044) "G1 Main Marker"  0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7609b49054f8 <mutex_init()::CGC_lock_storage+88>) at ./nptl/futex-internal.c:57
  17   Thread 0x7609b1e206c0 (LWP 93043) "GC Thread#0"     0x00007609b4a98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
--Type <RET> for more, q to quit, c to continue without paging--
    abstime=0x0, op=393, expected=0, futex_word=0x7609ac046848) at ./nptl/futex-internal.c:57
  18   Thread 0x7609b33ff6c0 (LWP 93042) "java"            0x00007609b4aecadf in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, 
    req=req@entry=0x7609b33fe8a0, rem=rem@entry=0x7609b33fe8a0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:78
(gdb) thr 18
[Switching to thread 18 (Thread 0x7609b33ff6c0 (LWP 93042))]
#0  0x00007609b4aecadf in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=req@entry=0x7609b33fe8a0, rem=rem@entry=0x7609b33fe8a0)
    at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:78
warning: 78 ../sysdeps/unix/sysv/linux/clock_nanosleep.c: No such file or directory
(gdb) bt
#0  0x00007609b4aecadf in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=req@entry=0x7609b33fe8a0, rem=rem@entry=0x7609b33fe8a0)
    at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:78
#1  0x00007609b4af9a27 in __GI___nanosleep (req=req@entry=0x7609b33fe8a0, rem=rem@entry=0x7609b33fe8a0) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2  0x00007609b4b0ec63 in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#3  0x00007609b4d6a1a8 in Java_MyLibrary_printMessage () from /home/yeongjae/Desktop/java_test/libMyLibrary.so
#4  0x000076099bc6b9c0 in ?? ()
#5  0x0000760923437ef0 in ?? ()
#6  0x0000000000000000 in ?? ()

 

0~3은 네이티브스택, 4~6은 자바스택을 쓴다

 

rbp            0x7609b33fe880      0x7609b33fe880
rsp            0x7609b33fe810      0x7609b33fe810

 

이 상황에서 하나씩 내려가보면

 

#0  __GI___nanosleep (req=req@entry=0x7609b33fe8a0, rem=rem@entry=0x7609b33fe8a0) at ../sysdeps/unix/sysv/linux/nanosleep.c:26
#1  0x00007609b4b0ec63 in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#2  0x00007609b4d6a1a8 in Java_MyLibrary_printMessage () from /home/yeongjae/Desktop/java_test/libMyLibrary.so
#3  0x000076099bc6b9c0 in ?? ()
#4  0x0000760923437ef0 in ?? ()
#5  0x0000000000000000 in ?? ()

 

rbp            0x7609b33fe890      0x7609b33fe890
rsp            0x7609b33fe890      0x7609b33fe890

 

#0  0x00007609b4b0ec63 in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#1  0x00007609b4d6a1a8 in Java_MyLibrary_printMessage () from /home/yeongjae/Desktop/java_test/libMyLibrary.so
#2  0x000076099bc6b9c0 in ?? ()
#3  0x0000760923437ef0 in ?? ()
#4  0x0000000000000000 in ?? ()

 

 

 

rbp            0x7609b33fe8d0      0x7609b33fe8d0
rsp            0x7609b33fe8a0      0x7609b33fe8a0

 

#0  0x00007609b4d6a1a8 in Java_MyLibrary_printMessage () from /home/yeongjae/Desktop/java_test/libMyLibrary.so
#1  0x000076099bc6b9c0 in ?? ()
#2  0x0000760923437ef0 in ?? ()
#3  0x0000000000000000 in ?? ()

 

rbp            0x7609b33fe900      0x7609b33fe900
rsp            0x7609b33fe8e0      0x7609b33fe8e0

 

#0  0x000076099bc6b9c0 in ?? ()
#1  0x0000760923437ef0 in ?? ()
#2  0x0000000000000000 in ?? ()

 

rbp            0x7609b33fe968      0x7609b33fe968
rsp            0x7609b33fe910      0x7609b33fe910

 

#0  0x000076099bc6b9c7 in ?? ()
#1  0x00007609b33fe968 in ?? ()
#2  0x000076099bc6b9c0 in ?? ()
#3  0x0000760923437ef0 in ?? ()
#4  0x0000000000000000 in ?? ()

 

rbp            0x7609b33fe968      0x7609b33fe968
rsp            0x7609b33fe900      0x7609b33fe900

 

스택 자체는 1개지만 native 메서드를 call할때 전용 스택이 있는 것이 아니라 그냥 스택프레임 모양이 다른것같다.

 

어느 스택이나

7609b3304000-7609b3400000 rw-p 00000000 00:00 0  여기에 해당하는 메모리를 스택으로 사용한다.

 

76099bc5f000-76099becf000 rwxp 00000000 00:00 0 여기에는 내가 작성한 자바 코드가 jit으로 컴파일되어 기계어로 들어가있는듯하다

 

아닌가

 

#0  0x00007609b4b0ec63 in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#1  0x00007609b4d6a1a8 in Java_MyLibrary_printMessage () from /home/yeongjae/Desktop/java_test/libMyLibrary.so
#2  0x000076099bc6b9c0 in ?? ()
#3  0x0000760923437ef0 in ?? ()
#4  0x0000000000000000 in ?? ()

 

#8  0x00007609b3ddaa51 in JVM_Sleep (env=0x7609ac019678, threadClass=<optimized out>, nanos=3000000000) at src/hotspot/share/prims/jvm.cpp:3066
#9  0x000076099bc6b9c0 in ?? ()
#10 0x00007609b33fe8c8 in ?? ()
#11 0x000076099bc672a8 in ?? ()
#12 0x00007609b33fe880 in ?? ()
#13 0x0000000000000000 in ?? ()

보면

c코드 전에

0x76099bc6b9be: call   *%rax를 호출하는데

jni코드가 아닐까 추측한다.

그 전 코드들 중에 내 코드가 있는게 아닐까

 

 

 

// MyLibrary.java
public class MyLibrary {
    // Load the C library
    static {
        System.loadLibrary("MyLibrary");
    }

    // Declare the native method
    public native void printMessage();

    public static void main(String[] args) {
        MyLibrary myLib = new MyLibrary();
// System.out.println("aa");      
while(true){
               myLib.printMessage(); // Call the native method
  System.out.println("aa");
  try {
                Thread.sleep(1); // 0.5초 대기
int c=0;
          for(int i=0;i<2100000000;i++){
c+=i;
}
 System.out.println(c);


  } catch (InterruptedException e) {
                e.printStackTrace();
            }

 // Thread.sleep(3000); // 0.5초 대기
}

    }
}

이런식으로 연산을 엄청해서 늦춰서 break를 걸어보면

 

418800000-457000000 rw-p 00000000 00:00 0 
457000000-7ff800000 ---p 00000000 00:00 0 
7ff800000-7ff908000 rw-p 00ced000 103:0a 17185179                        /usr/lib/jvm/java-21-openjdk-amd64/lib/server/classes.jsa
7ff908000-800000000 rw-p 00000000 00:00 0 
5ab5f1272000-5ab5f1273000 r--p 00000000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5ab5f1273000-5ab5f1274000 r-xp 00001000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5ab5f1274000-5ab5f1275000 r--p 00002000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5ab5f1275000-5ab5f1276000 r--p 00002000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5ab5f1276000-5ab5f1277000 rw-p 00003000 103:0a 17185026                  /usr/lib/jvm/java-21-openjdk-amd64/bin/java
5ab5f2bbc000-5ab5f2c03000 rw-p 00000000 00:00 0                          [heap]
7a4af8000000-7a4af8021000 rw-p 00000000 00:00 0 
7a4af8021000-7a4afc000000 ---p 00000000 00:00 0 
7a4afc000000-7a4afc021000 rw-p 00000000 00:00 0 
7a4afc021000-7a4b00000000 ---p 00000000 00:00 0 
7a4b04000000-7a4b0402d000 rw-p 00000000 00:00 0 
7a4b0402d000-7a4b08000000 ---p 00000000 00:00 0 
7a4b08000000-7a4b0810b000 rw-p 00000000 00:00 0 
7a4b0810b000-7a4b0c000000 ---p 00000000 00:00 0 
7a4b10000000-7a4b10021000 rw-p 00000000 00:00 0 
7a4b10021000-7a4b14000000 ---p 00000000 00:00 0 
7a4b14000000-7a4b14021000 rw-p 00000000 00:00 0 
7a4b14021000-7a4b18000000 ---p 00000000 00:00 0 
7a4b1c000000-7a4b1c021000 rw-p 00000000 00:00 0 
7a4b1c021000-7a4b20000000 ---p 00000000 00:00 0 
7a4b20000000-7a4b20021000 rw-p 00000000 00:00 0 
7a4b20021000-7a4b24000000 ---p 00000000 00:00 0 
7a4b28000000-7a4b28021000 rw-p 00000000 00:00 0 
7a4b28021000-7a4b2c000000 ---p 00000000 00:00 0 
7a4b2c000000-7a4b2c021000 rw-p 00000000 00:00 0 
7a4b2c021000-7a4b30000000 ---p 00000000 00:00 0 
7a4b34000000-7a4b34020000 rw-p 00000000 00:00 0 
7a4b34020000-7a4b34400000 ---p 00000000 00:00 0 
7a4b34400000-7a4b34410000 rw-p 00000000 00:00 0 
7a4b34410000-7a4b38000000 ---p 00000000 00:00 0 
7a4b38000000-7a4b38021000 rw-p 00000000 00:00 0 
7a4b38021000-7a4b3c000000 ---p 00000000 00:00 0 
7a4b3f000000-7a4b3fcae000 rw-p 00001000 103:0a 17185179                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/classes.jsa
7a4b3fcae000-7a4b40000000 ---p 00000000 00:00 0 
7a4b40000000-7a4b40010000 rw-p 00000000 00:00 0 
7a4b40010000-7a4b40040000 ---p 00000000 00:00 0 
7a4b40040000-7a4b40050000 rw-p 00000000 00:00 0 
7a4b40050000-7a4b80000000 ---p 00000000 00:00 0 
7a4b80000000-7a4b80021000 rw-p 00000000 00:00 0 
7a4b80021000-7a4b84000000 ---p 00000000 00:00 0 
7a4b84000000-7a4b84021000 rw-p 00000000 00:00 0 
7a4b84021000-7a4b88000000 ---p 00000000 00:00 0 
7a4b8bf00000-7a4b8bf04000 ---p 00000000 00:00 0 
7a4b8bf04000-7a4b8c000000 rw-p 00000000 00:00 0 
7a4b8c000000-7a4b8c021000 rw-p 00000000 00:00 0 
7a4b8c021000-7a4b90000000 ---p 00000000 00:00 0 
7a4b90000000-7a4b90021000 rw-p 00000000 00:00 0 
7a4b90021000-7a4b94004000 ---p 00000000 00:00 0 
7a4b94004000-7a4b94100000 rw-p 00000000 00:00 0 
7a4b94100000-7a4b94104000 ---p 00000000 00:00 0 
7a4b94104000-7a4b94200000 rw-p 00000000 00:00 0 
7a4b94200000-7a4b94204000 ---p 00000000 00:00 0 
7a4b94204000-7a4b94300000 rw-p 00000000 00:00 0 
7a4b94300000-7a4b94304000 ---p 00000000 00:00 0 
7a4b94304000-7a4b94400000 rw-p 00000000 00:00 0 
7a4b94400000-7a4b94404000 ---p 00000000 00:00 0 
7a4b94404000-7a4b94500000 rw-p 00000000 00:00 0 
7a4b94500000-7a4b94504000 ---p 00000000 00:00 0 
7a4b94504000-7a4b94600000 rw-p 00000000 00:00 0 
7a4b94600000-7a4b94604000 ---p 00000000 00:00 0 
7a4b94604000-7a4b94700000 rw-p 00000000 00:00 0 
7a4b94700000-7a4b94704000 ---p 00000000 00:00 0 
7a4b94704000-7a4b94800000 rw-p 00000000 00:00 0 
7a4b94800000-7a4b95736000 r--p 00000000 103:0a 16517754                  /usr/lib/locale/locale-archive
7a4b957f8000-7a4b957f9000 ---p 00000000 00:00 0 
7a4b957f9000-7a4b958f9000 rw-p 00000000 00:00 0 
7a4b958f9000-7a4b958fa000 ---p 00000000 00:00 0 
7a4b958fa000-7a4b959fa000 rw-p 00000000 00:00 0 
7a4b959fa000-7a4b959fb000 ---p 00000000 00:00 0 
7a4b959fb000-7a4b95afb000 rw-p 00000000 00:00 0 
7a4b95afb000-7a4b95afc000 ---p 00000000 00:00 0 
7a4b95afc000-7a4b95bfc000 rw-p 00000000 00:00 0 
7a4b95bfc000-7a4b98021000 rw-p 00000000 00:00 0 
7a4b98021000-7a4b9c000000 ---p 00000000 00:00 0 
7a4b9c022000-7a4b9c027000 r--p 00000000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7a4b9c027000-7a4b9c068000 r-xp 00005000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7a4b9c068000-7a4b9c0f1000 r--p 00046000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7a4b9c0f1000-7a4b9c0f2000 r--p 000ce000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7a4b9c0f2000-7a4b9c0f3000 rw-p 000cf000 103:0a 17185160                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjsvml.so
7a4b9c0f3000-7a4b9cbfe000 rw-p 00000000 00:00 0 
7a4b9cbfe000-7a4b9cbff000 ---p 00000000 00:00 0 
7a4b9cbff000-7a4b9ccff000 rw-p 00000000 00:00 0 
7a4b9ccff000-7a4b9cd00000 ---p 00000000 00:00 0 
7a4b9cd00000-7a4b9ce00000 rw-p 00000000 00:00 0 
7a4b9ce00000-7a4b9dda0000 rw-p 00000000 00:00 0 
7a4b9dda0000-7a4bac7c0000 ---p 00000000 00:00 0 
7a4bac7c0000-7a4bac7e0000 rw-p 00000000 00:00 0 
7a4bac800000-7a4bac9f4000 rw-p 00000000 00:00 0 
7a4bac9f4000-7a4bae738000 ---p 00000000 00:00 0 
7a4bae738000-7a4bae73c000 rw-p 00000000 00:00 0 
7a4bae800000-7a4bae9f4000 rw-p 00000000 00:00 0 
7a4bae9f4000-7a4bb0738000 ---p 00000000 00:00 0 
7a4bb0738000-7a4bb073c000 rw-p 00000000 00:00 0 
7a4bb0800000-7a4bb0a70000 rwxp 00000000 00:00 0 
7a4bb0a70000-7a4bb7c5f000 ---p 00000000 00:00 0 
7a4bb7c5f000-7a4bb7ecf000 rwxp 00000000 00:00 0 
7a4bb7ecf000-7a4bb83a0000 ---p 00000000 00:00 0 
7a4bb83a0000-7a4bb8610000 rwxp 00000000 00:00 0 
7a4bb8610000-7a4bbf800000 ---p 00000000 00:00 0 
7a4bbf800000-7a4bc7e02000 r--s 00000000 103:0a 17185176                  /usr/lib/jvm/java-21-openjdk-amd64/lib/modules
7a4bc7e7e000-7a4bc7eff000 rw-p 00000000 00:00 0 
7a4bc7eff000-7a4bc7f00000 ---p 00000000 00:00 0 
7a4bc7f00000-7a4bc8000000 rw-p 00000000 00:00 0 
7a4bc8000000-7a4bc8176000 rw-p 00000000 00:00 0 
7a4bc8176000-7a4bcc000000 ---p 00000000 00:00 0 
7a4bcc021000-7a4bcd033000 rw-p 00000000 00:00 0 
7a4bcd033000-7a4bcd117000 ---p 00000000 00:00 0 
7a4bcd117000-7a4bcd11c000 rw-p 00000000 00:00 0 
7a4bcd11c000-7a4bcd200000 ---p 00000000 00:00 0 
7a4bcd200000-7a4bcd29d000 r--p 00000000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7a4bcd29d000-7a4bcd3dd000 r-xp 0009d000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7a4bcd3dd000-7a4bcd46b000 r--p 001dd000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7a4bcd46b000-7a4bcd476000 r--p 0026b000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7a4bcd476000-7a4bcd479000 rw-p 00276000 103:0a 16526993                  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7a4bcd479000-7a4bcd47d000 rw-p 00000000 00:00 0 
7a4bcd4a5000-7a4bcd500000 rw-p 00000000 00:00 0 
7a4bcd500000-7a4bcd504000 ---p 00000000 00:00 0 
7a4bcd504000-7a4bcd600000 rw-p 00000000 00:00 0 
7a4bcd600000-7a4bcd896000 r--p 00000000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7a4bcd896000-7a4bce6fe000 r-xp 00296000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7a4bce6fe000-7a4bce9d1000 r--p 010fe000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7a4bce9d1000-7a4bceaa1000 r--p 013d0000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7a4bceaa1000-7a4bcead1000 rw-p 014a0000 103:0a 17185182                  /usr/lib/jvm/java-21-openjdk-amd64/lib/server/libjvm.so
7a4bcead1000-7a4bceb37000 rw-p 00000000 00:00 0 
7a4bceb42000-7a4bcec00000 rw-p 00000000 00:00 0 
7a4bcec00000-7a4bcec28000 r--p 00000000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7a4bcec28000-7a4bcedb0000 r-xp 00028000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7a4bcedb0000-7a4bcedff000 r--p 001b0000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7a4bcedff000-7a4bcee03000 r--p 001fe000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7a4bcee03000-7a4bcee05000 rw-p 00202000 103:0a 16526467                  /usr/lib/x86_64-linux-gnu/libc.so.6
7a4bcee05000-7a4bcee12000 rw-p 00000000 00:00 0 
7a4bcee3c000-7a4bcee80000 rw-p 00000000 00:00 0 
7a4bcee80000-7a4bcee8a000 ---p 00000000 00:00 0 
7a4bcee8a000-7a4bcee97000 r--p 00000000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7a4bcee97000-7a4bceea6000 r-xp 0000d000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7a4bceea6000-7a4bceeab000 r--p 0001c000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7a4bceeab000-7a4bceeac000 r--p 00021000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7a4bceeac000-7a4bceead000 rw-p 00022000 103:0a 17185153                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjava.so
7a4bceead000-7a4bceeae000 rw-p 00000000 00:00 0 
7a4bceeae000-7a4bceeb6000 rw-s 00000000 103:0a 17301594                  /tmp/hsperfdata_yeongjae/96036
7a4bceeb6000-7a4bceeba000 r--p 00000000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7a4bceeba000-7a4bceedd000 r-xp 00004000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7a4bceedd000-7a4bceee1000 r--p 00027000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7a4bceee1000-7a4bceee2000 r--p 0002b000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7a4bceee2000-7a4bceee3000 rw-p 0002c000 103:0a 16526600                  /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7a4bceee3000-7a4bceef3000 r--p 00000000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7a4bceef3000-7a4bcef72000 r-xp 00010000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7a4bcef72000-7a4bcefca000 r--p 0008f000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7a4bcefca000-7a4bcefcb000 r--p 000e7000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7a4bcefcb000-7a4bcefcc000 rw-p 000e8000 103:0a 16526772                  /usr/lib/x86_64-linux-gnu/libm.so.6
7a4bcefcc000-7a4bcefce000 rw-p 00000000 00:00 0 
7a4bcefce000-7a4bcefd0000 r--p 00000000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7a4bcefd0000-7a4bcefda000 r-xp 00002000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7a4bcefda000-7a4bcefdd000 r--p 0000c000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7a4bcefdd000-7a4bcefde000 r--p 0000f000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7a4bcefde000-7a4bcefdf000 rw-p 00010000 103:0a 17185157                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjli.so
7a4bcefdf000-7a4bcefe1000 r--p 00000000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7a4bcefe1000-7a4bceff3000 r-xp 00002000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7a4bceff3000-7a4bceff9000 r--p 00014000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7a4bceff9000-7a4bceffa000 r--p 0001a000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7a4bceffa000-7a4bceffb000 rw-p 0001b000 103:0a 16527124                  /usr/lib/x86_64-linux-gnu/libz.so.1.3
7a4bceffc000-7a4bceffd000 r--p 00000000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7a4bceffd000-7a4bceffe000 r-xp 00001000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7a4bceffe000-7a4bcefff000 r--p 00002000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7a4bcefff000-7a4bcf000000 r--p 00002000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7a4bcf000000-7a4bcf001000 rw-p 00003000 103:0a 11431798                  /home/yeongjae/Desktop/java_test/libMyLibrary.so
7a4bcf001000-7a4bcf002000 ---p 00000000 00:00 0 
7a4bcf002000-7a4bcf003000 r--p 00000000 00:00 0 
7a4bcf003000-7a4bcf004000 ---p 00000000 00:00 0 
7a4bcf004000-7a4bcf006000 r--p 00000000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7a4bcf006000-7a4bcf009000 r-xp 00002000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7a4bcf009000-7a4bcf00a000 r--p 00005000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7a4bcf00a000-7a4bcf00b000 r--p 00006000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7a4bcf00b000-7a4bcf00c000 rw-p 00007000 103:0a 17185156                  /usr/lib/jvm/java-21-openjdk-amd64/lib/libjimage.so
7a4bcf00c000-7a4bcf00e000 rw-p 00000000 00:00 0 
7a4bcf00e000-7a4bcf00f000 r--p 00000000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7a4bcf00f000-7a4bcf03a000 r-xp 00001000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7a4bcf03a000-7a4bcf044000 r--p 0002c000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7a4bcf044000-7a4bcf046000 r--p 00036000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7a4bcf046000-7a4bcf048000 rw-p 00038000 103:0a 16526285                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7ffc5a00a000-7ffc5a02b000 rw-p 00000000 00:00 0                          [stack]
7ffc5a1b7000-7ffc5a1bb000 r--p 00000000 00:00 0                          [vvar]
7ffc5a1bb000-7ffc5a1bd000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]

 

1    Thread 0x7a4bcefccb80 (LWP 96036) "java"            0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=128, cancel=true, abstime=0x0, op=265, 
    expected=96037, futex_word=0x7a4bcd5ff990) at ./nptl/futex-internal.c:57
  2    Thread 0x7a4b8bfff6c0 (LWP 96053) "Common-Cleaner"  0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7a4b8bffe430, 
    op=137, expected=0, futex_word=0x7a4bc81681b0) at ./nptl/futex-internal.c:57
  3    Thread 0x7a4b940ff6c0 (LWP 96052) "Notification Th" 0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=31307, cancel=true, abstime=0x0, 
    op=393, expected=0, futex_word=0x7a4bceb04c78 <mutex_init()::Notification_lock_storage+88>) at ./nptl/futex-internal.c:57
  4    Thread 0x7a4b941ff6c0 (LWP 96051) "C1 CompilerThre" 0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=12, cancel=true, 
    abstime=0x7a4b941feaf0, op=137, expected=0, futex_word=0x7a4bceb042fc <mutex_init()::MethodCompileQueue_lock_storage+92>) at ./nptl/futex-internal.c:57
  5    Thread 0x7a4b942ff6c0 (LWP 96050) "C2 CompilerThre" 0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=12, cancel=true, 
    abstime=0x7a4b942feaf0, op=137, expected=0, futex_word=0x7a4bceb042fc <mutex_init()::MethodCompileQueue_lock_storage+92>) at ./nptl/futex-internal.c:57
  6    Thread 0x7a4b943ff6c0 (LWP 96049) "Monitor Deflati" 0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=31307, cancel=true, 
    abstime=0x7a4b943fece0, op=137, expected=0, futex_word=0x7a4bceb04d78 <mutex_init()::MonitorDeflation_lock_storage+88>) at ./nptl/futex-internal.c:57
  7    Thread 0x7a4b944ff6c0 (LWP 96048) "Service Thread"  0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7a4bceb04cf8 <mutex_init()::Service_lock_storage+88>) at ./nptl/futex-internal.c:57
  8    Thread 0x7a4b945ff6c0 (LWP 96047) "Signal Dispatch" 0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
    abstime=0x0, op=393, expected=0, futex_word=0x5ab5f2bbd550) at ./nptl/futex-internal.c:57
  9    Thread 0x7a4b946ff6c0 (LWP 96046) "Finalizer"       0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7a4bc814f878) at ./nptl/futex-internal.c:57
  10   Thread 0x7a4b947ff6c0 (LWP 96045) "Reference Handl" 0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=31307, cancel=true, abstime=0x0, 
    op=393, expected=0, futex_word=0x7a4bceb02d78 <mutex_init()::Heap_lock_storage+88>) at ./nptl/futex-internal.c:57
  11   Thread 0x7a4b958f86c0 (LWP 96044) "VM Thread"       0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7a4b958f7d00, 
    op=137, expected=0, futex_word=0x7a4bceb02b78 <mutex_init()::VMOperation_lock_storage+88>) at ./nptl/futex-internal.c:57
  12   Thread 0x7a4b959f96c0 (LWP 96043) "VM Periodic Tas" 0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7a4b959f8d20, 
    op=137, expected=0, futex_word=0x7a4bceb03d78 <mutex_init()::PeriodicTask_lock_storage+88>) at ./nptl/futex-internal.c:57
  13   Thread 0x7a4b95afa6c0 (LWP 96042) "G1 Service"      0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=31307, cancel=true, 
    abstime=0x7a4b95af9d50, op=137, expected=0, futex_word=0x7a4bc810bef8) at ./nptl/futex-internal.c:57
  14   Thread 0x7a4b95bfb6c0 (LWP 96041) "G1 Refine#0"     0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7a4bc810af48) at ./nptl/futex-internal.c:57
  15   Thread 0x7a4b9ccfe6c0 (LWP 96040) "G1 Conc#0"       0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
    abstime=0x0, op=393, expected=0, futex_word=0x7a4bc8058898) at ./nptl/futex-internal.c:57
  16   Thread 0x7a4b9cdff6c0 (LWP 96039) "G1 Main Marker"  0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, 
    expected=0, futex_word=0x7a4bceb054f8 <mutex_init()::CGC_lock_storage+88>) at ./nptl/futex-internal.c:57
  17   Thread 0x7a4bc7fff6c0 (LWP 96038) "GC Thread#0"     0x00007a4bcec98d61 in __futex_abstimed_wait_common64 (private=<optimized out>, cancel=true, 
--Type <RET> for more, q to quit, c to continue without paging--
    abstime=0x0, op=393, expected=0, futex_word=0x7a4bc8046848) at ./nptl/futex-internal.c:57
  18   Thread 0x7a4bcd5ff6c0 (LWP 96037) "java"            0x00007a4bb83a0f02 in ?? ()

 

 

#0  0x00007a4bb83a0f02 in ?? ()
#1  0x0000000456812a08 in ?? ()
#2  0x0000000456801310 in ?? ()
#3  0x0000000000017138 in ?? ()
#4  0x00000000000f4240 in ?? ()
#5  0x0000000000000000 in ?? ()

 

0x7a4bb83a0ed0: add    %ebx,%r13d
   0x7a4bb83a0ed3: add    %ebx,%r13d
   0x7a4bb83a0ed6: add    %ebx,%r13d
   0x7a4bb83a0ed9: add    %ebx,%r13d
   0x7a4bb83a0edc: add    %ebx,%r13d
   0x7a4bb83a0edf: add    %ebx,%r13d
   0x7a4bb83a0ee2: add    %ebx,%r13d
   0x7a4bb83a0ee5: add    %ebx,%r13d
   0x7a4bb83a0ee8: add    %ebx,%r13d
   0x7a4bb83a0eeb: add    %ebx,%r13d
   0x7a4bb83a0eee: add    %ebx,%r13d
   0x7a4bb83a0ef1: add    %ebx,%r13d
   0x7a4bb83a0ef4: add    %ebx,%r13d
   0x7a4bb83a0ef7: add    %ebx,%r13d
   0x7a4bb83a0efa: add    %ebx,%r13d
   0x7a4bb83a0efd: lea    0x78(%r13,%rbx,1),%r13d
   0x7a4bb83a0f02: add    $0x10,%ebx
   0x7a4bb83a0f05: cmp    %r11d,%ebx
   0x7a4bb83a0f08: jl     0x7a4bb83a0ed0

이런식으로 루프가 있다


rsp            0x7a4bcd5fe9a0      0x7a4bcd5fe9a0

 

rbx값을 조작하니까 결과값이 달라짐

 

 

#0  0x00007a4bcececadf in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=req@entry=0x7a4bcd5fe8b0, rem=rem@entry=0x7a4bcd5fe8b0)
    at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:78
#1  0x00007a4bcecf9a27 in __GI___nanosleep (req=req@entry=0x7a4bcd5fe8b0, rem=rem@entry=0x7a4bcd5fe8b0) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2  0x00007a4bced0ec63 in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#3  0x00007a4bceffd1a8 in Java_MyLibrary_printMessage () from /home/yeongjae/Desktop/java_test/libMyLibrary.so
#4  0x00007a4bb7c6b9c0 in ?? ()
#5  0x00000004568088e0 in ?? ()
#6  0x00007a4bcd5fe928 in ?? ()
#7  0x0000000000000000 in ?? ()

 

라이브러리 sleep함수 때

rbp            0x7a4bcd5fe890      0x7a4bcd5fe890
rsp            0x7a4bcd5fe820      0x7a4bcd5fe820

 

 

7a4bb83a0000-7a4bb8610000 rwxp 00000000 00:00 0  여기에 코드가 있고

 

7a4bb7c5f000-7a4bb7ecf000 rwxp 00000000 00:00 0 여기엔 아마 jni관련 코드가 있는거같다.