일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹
- node.js
- 보안
- 개발
- 안드로이드
- 웹 개발
- 파이썬
- 데이터베이스
- Python
- 디자인 패턴
- 스프링 부트
- mysql
- python3
- Spring
- BCI
- JPA
- 파이썬3
- db
- 스프링부트
- 장고
- ORM
- bytecode
- rabbitmq
- django
- java
- HTTP
- 자바
- Spring Boot
- 스프링
- 자료구조
- Today
- Total
목록JVM (4)
semtax의 개발 일지
소개 개인적으로 스프링이나 자바쪽을 구글 검색을 하면서 공부하고 있는데, 해당 사이트의 정보들이 구글에 뜨고, 실제로도 유용하게 배운 정보들이 많이 있다. 그래서 다른 사람들도 알면은 좋을거 같아서 같이 공유해보도록 하겠다. https://www.baeldung.com/
1. Tree API를 이용한 메서드 조작 ASM에서 제공하는 MethodNode는 대략적으로 아래와 같이 생겼습니다. public class MethodNode ... { public int access; public String name; public String desc; public String signature; public List exceptions; public List visibleAnnotations; public List invisibleAnnotations; public List attrs; public Object annotationDefault; public List[] visibleParameterAnnotations; public List[] invisibleParameter..
1. Tree API 이번 포스팅에서는 ASM에서 제공하는 Tree API를 이용해서, 클래스 파일을 조작해보도록 하겠습니다. ASM에서는 클래스 조작을 위한 Tree API인 ClassNode 클래스를 제공합니다. 대략적인 생김새는 아래와 같습니다. public class ClassNode ... { public int version; public int access; public String name; public String signature; public String superName; public List interfaces; public String sourceFile; public String sourceDebug; public String outerClass; public String ou..
1. JVM은 어떻게 클래스 파일을 실행하는가? 일단 자바가 어떠한 방식으로 컴파일된 클래스 파일을 실행하는지 알아보자. 먼저, JVM(자바 가상 머신)이 컴파일된 클래스파일을 읽어서 메모리에 로딩을 한다. 그 다음에, JVM이 클래스 파일에 있는 바이트코드를 순차적으로 읽으면서 그에 맞는 동작을 수행한다(사실 요즘에는 JVM이 속도를 위해서 자주 사용하는 부분을 파악해서 Just in time 방식을 이용해서 해당 부분을 미리 Native Code로 변환을 해서 실행을 한다). 이때 자바에서는 이러한 바이트코드들을 실행하는 기본 단위가 스레드(Thread)이다. 또한, 자바에서는 각 스레드 별로 Execution Stack(JVM Stack)을 1개씩 가지고 있다. 또한 각 스레드에서 함수를 호출할시 ..