[면접공부] java - jvm(2)
- 국비지원 (스파르타)
- 2025. 4. 10. 04:46
자바를 공부하면서 제일 중요하다고 생각하는 부분이 JVM이라고 생각하다.
그렇다고 그전에 작성한 글을 똑같이 작성하는 건 아니구 JVM이 왜 중요하는지 부터 생각을 해야 한다.
사실 JVM자체가 중요한건 아니구 자바 전역에 퍼져있는 개념이 JVM이기 때문이다.
예를들어 쓰레드만 봐도 얘를 이해를 하려면 JVM을 이해를 해야한다고 생각한다.
그 전에도 말했듯이 쓰레드는 JVM내에서도 스택이라는 메모리에 저장이 되어진다. 알다시피 스택은 LIFO로 나중에 들어온 친구가 먼저 나가는 형태다. 결국 쓰레드는 자동적으로 제거가 되어진다. 그런데 문제는 쓰레드는 객체끼리 공유가 되어진다. 그렇다면 쓰레드는 어떻게 객체끼리 공유를 할 수 있는 걸까? 바로 쓰레드 로컬이라는 것으로 공유를 할 수 가 있다. 쓰레드 로컬을 잘 모르기 때문에 검색을 해보자.
- 쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다.
- 쓰레드 로컬을 사용하면 각 쓰레드마다 별도의 내부 저장소를 제공한다.
- 예를 들면, thread-A는 thread-A 전용 보관소에서 필드 데이터를 반환해준다.
- 따라서 같은 인스턴스의 쓰레드 로컬 필드에 접근해도 문제가 생기지 않는다.
출처: 출처임
- 내가 알기로는 요걸 통해 객체끼리 공유가 되어지는걸로 알고 있다. 갑자기 드는 생각이 어떻게 공유를 할 수 있는걸까?
- 여러 객체가 같은 ThreadLocal 인스턴스를 참조하고, 같은 쓰레드 안에서 실행되면 값을 공유할 수 있다.
- ThreadLocal 자체는 쓰레드 간 공유를 막기 위한 도구이다.
라고한다. 그러니까 내가 잘못알고 있던거 같다. 음 그러면 같은 쓰레드에서 공유하려구.. 생각해보니 객체가 다르다고 해서 쓰레드가 다를 필요는 없을거 같다. 암튼 그건 중요한게 아니구 쓰레드 로컬이라는건 요런 친구인 정도라는것만 이해하면 될거 같다.
그렇다면 객체는 어떻게 되어질까? 객체는 힙메모리에 저장이 되어진다. 힙메모리는 알다시피 자동적으로 메모리가 정리가 되지 않는다. 그래서 나온것이 GC다. 그전날 GC가 어떻게 동작하는지 설명을 했었는데 요번에 다른분들과 대화를 하면서 몇가지 키워드가 있어서 정리를 하려고 했지만 얘네는 안나올거 같아. 일단 보류예정이다.
암튼, 그것도 공부를 할거 같긴한데.. 이제 뭘 공부를 해야 할까?
내일 한번 정리를 해보자!!
이제 슬슬 DB랑 스프링도 정리해야 하는디... 언제 하냐..ㅎㅎ
'국비지원 (스파르타)' 카테고리의 다른 글
[면접공부] 자바 - 면접질문(2) (feat.gpt) (2) | 2025.04.11 |
---|---|
[면접공부] 자바 - 면접질문(1) (feat.gpt) (1) | 2025.04.10 |
[면접공부] 1. java - jvm공부 (1) | 2025.04.08 |
[학습] postgres vs mysql (0) | 2025.04.07 |
[SA문서작성] 3차 프로젝트 (0) | 2025.04.04 |