일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- mockito
- ddd
- Java
- Generic
- junit5
- *
- rest api
- 서명
- SOA
- IOC
- AOP
- MSA
- spring
- PSA
- Exception
- reflection
- bytecode
- Transaction
- OOP
- JSON
- di
- jvm
- bounded context
- redis
- Rest
- Spring Data Redis
- JWT
- Today
- Total
목록jvm (2)
개발자일기
ByteCode 조작 compile결과인 bytecode를 조작 classLoader가 클래스를 읽어올때 javaagent의 premain에서 조작시도 이미 런타임에 조작시 클래스가 메모리에 로드된 상태임 ByteBuddy 라이브러리 사용 APM툴 같은것들이 조작을이용한다. Reflection 클래스로더에 의해 메모리에 로딩된 class정보 조회 필드, 메소드 , 상위 클래스, 상위 인터페이스를 가져옴, 어노테이션 annotion을 @Retetion을 runtime까지 유지시키면 annotion정보를 가져올수있다. Class를 이용한 객체생성 Constructor.newInstance(), Constructor.newInstance(params) 적합한 생성자 존재 필요 필드에 접근 private에도 접..
JRE 자바를 실행하기 위한 도구 JDK JRE + 자바개발도구(컴파일러 등등) 메모리구조 heap 객체를 저장 메소드 영역 클래스 정보, static 변수 PC(Program Counter) 레지스터 실행되야될 명령어 위치를 가지고있다. 쓰레드마다 생성 스택 쓰레드마다 스택 생성, 메소드 호출 스택 네이티브 메소드 스택 네이티브를 실행하기 위한 스택 자바 실행 순서 COMPILE bytecode로 컴파일 클래스 로더 필요한 class들을 동적으로 메모리에 올림, class path에 있는것들은 다올린다. 힙에는 Class객체 생성 메소드 영역에는 클래스 정보를 class로더 계층형 체이닝, 위에서 찾고 없으면 밑으로 위임 부트스트랩 : java_home/lib 자바 코어 라이브러리 플랫폼(익스텐션) 클..