1편 : https://developer-youn.tistory.com/124 jvm 조금씩 알아가기 1편 - jvm이란 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124)을 보고 오시는걸 추천드립니다. 0. 목표 java를 개발하다 보면 종종 class loader developer-youn.tistory.com 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124..
JVM
1편 : https://developer-youn.tistory.com/124 jvm 조금씩 알아가기 1편 - jvm이란 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124)을 보고 오시는걸 추천드립니다. 0. 목표 java를 개발하다 보면 종종 class loader developer-youn.tistory.com 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124..
1편 : https://developer-youn.tistory.com/124 jvm 조금씩 알아가기 1편 - jvm이란 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124)을 보고 오시는걸 추천드립니다. 0. 목표 java를 개발하다 보면 종종 class loader developer-youn.tistory.com 3편 : https://developer-youn.tistory.com/126 jvm 조금씩 알아가기 3편 - 데이터 영역(Runtime Data Areas) 1편과 2편을 보고 읽으시는 것을 추천드립니다 1편 https:..
2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124)을 보고 오시는걸 추천드립니다. 0. 목표 java를 개발하다 보면 종종 class loader라는 단어를 콘솔에 찍힌 에러 등을 통해 본 적이 있을 수도 있다.(실은 대부분 봤을 developer-youn.tistory.com 3편 : https://developer-youn.tistory.com/126 jvm 조금씩 알아가기 3편 - 데이터 영역(Runtime Data Areas) 1편과 2편을 보고 읽으시는 것을 추천드립니다 1편 https://developer-youn.tist..
0. 왜 이걸 파보기 시작했는가 Annotation을 잘 사용하고 있고 springboot나 lombok을 사용하는 경우 정말 빼놓을 수가 없습니다. 근데 이게 어떻게 동작하는지 갑자기 의문이 생겼습니다. @RestController public class HelloController { @GetMapping("/hello") public String hello(String name) { return "hello " + name; } } @Override는 그렇다 치고 스프링부트 다루다 보면 정말 다양한 어노테이션들을 보게 되는데 그거 진짜 어떻게 동작하는 걸까요 1. 아무튼 그래서 Annotation이란? https://docs.oracle.com/javase/tutorial/java/annotatio..
나름 정리한다고 해봤는데 너무 어렵다.. 계속 보완을 해야한다. 가비지 컬렉터는 두 가지 전제 조건(Weak Generation Hypothesis)을 기반으로 만들어졌다 대부분의 객체는 금방 접근 불가능 상태(unreachable)가 된다. 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재한다. JVM의 종류가 많은 만큼 GC또한 다양한 벤더가 배포했다. 그래도 모든 GC는 다음 원칙을 지켜야한다. GC알고리즘은 반드시 모든 Grabage를 수집해야 한다. 아직 살아있는 객체는 절대 수집해서는 안된다. 아직 살아있는 객체를 수집하면 Segmentation Fault가 일어나거나 프로그램 데이터가 조용하게 망가진다. Segmentation Fault Segfault로 줄여서 말하기도 한다. 프로그램이..
- 피드백이나 문의는 댓글 부탁드립니다. 0. 이 글을 작성하기 시작한 이유 회사에서 인턴을 하시는 분이 나에게 질문을 했다. "JAVA에서 string을 보통 string str = "abc"; 이런 식으로 표현하는데 분명 레퍼런스 타입이면서 new()로 표현을 안 하면 메모리에서 언제 제거될까요? 이 방법이 메모리에 적합한 방법일까요?" 전에 StringBuilder에 대해 간단하게 글을 작성한 적이 있었다.(https://developer-youn.tistory.com/14) 근데 new()로 하는 것과 ""로 하는 것에는 정확히 어떤 차이가 있을까 1. 과거 기억 소환 일단 기억을 더듬어보자. new 키워드를 통해 객체를 생성하면 heap영역에 할당이 되고 heap 영역에 존재하는 것들은 GC의 ..
GC관련 혹은 JVM 관련해서 살펴볼 때 -XX:+~~~ 와 같은 문장을 본 적이 있을 것이다. 이게 도대체 뭔지 궁금해서 검색을 해보았더니 JAVA Hotspot VM에서 사용하는 Option설정 예약어였다. 아래 내용은 오라클에서 제공하는 Hotspot VM의 vmoptions 페이지에서 일부를 옮겨와 번역하였다. -XX란? 원문 - Options that begin with -X are non-standard (not guaranteed to be supported on all VM implementations), and are subject to change without notice in subsequent releases of the JDK. - Options that are specified..
이 글을 쓰면서 너무 중구난방 한 글을 작성하지 않나 하는 생각이 머릿속을 계속 접근하고 있습니다.. class 파일의 내부 정의 키워드를 넣지 않는 등 일부 당장 필요가 없다고 판단되는 부분들을 임의로 삭제한다고 삭제하였는데 과연 좋은 판단이었는지에 대해서는 더 생각해보고 이 글을 수정하겠습니다. 0. 들어가며 JVM은 Java Virtual Machine의 약자이다. Virtual Machine이라는 단어에 주목해야한다. VM이라는 건 프로그램을 실행하기 위해 물리적 머신(즉, 컴퓨터)과 유사한 머신을 소프트웨어로 구현한 것을 말한다고 할 수 있다. 요즈음에 와서는 JAVA의 목적성에서 변색된 개념(왜 변색되었다고 말하는지는 추후 조사하여 작성하도록 하겠다..)이긴 하지만 자바는 원래 WORA(Wri..
blogs.sap.com/2019/10/07/does-32-bit-or-64-bit-jvm-matter-anymore/ Does 32-Bit or 64-Bit JVM matter anymore? | SAP Blogs 0 Likes 1,907 View 0 Comments blogs.sap.com 위 블로그에 정리가 잘 되어있다고 생각해 나름 요약하며 번역을 해 보았다. 일단 대부분 사람들은 64비트가 32비트보다 크다고 생각해서 64bit JVM의 성능이 32bit JVM보다 훨씬 성능이 좋다고 생각한다. 아쉽게도 64bit JVM이 32bit JVM보다 성능 저하를 보일 수 있다. 퍼포먼스에 대한 문제점이 있다면 왜 64bit JVM을 사용하는가? 32bit JVM 의 최대 메모리 공간은 4gb이다. 그..