LenKIM / everyone-is-effective-java-study

다우기술 연구소 스터디 저장소
8 stars 1 forks source link

primitive type 는 스택 영역에 쌓이는데, 이는 race condition에 영향을 미치는가? #6

Open LenKIM opened 4 years ago

kimth0719 commented 4 years ago

단순히 primitive type 이 stack 에 쌓인다고 말하기보다 member variable 이냐 local variable 에 따라 나뉠수 있습니다.

member variable은 method area의 정보를 바탕으로 heap 에 생성되는 method area의 구현체 그래서 race condition 에 영향을 미침

local variable은 method information 에 변수 정보가 위치하고 java virtual machine stacks 에 할당 그래서 heap 영역이 아니기 때문에 race condition 에 영향을 미치지 않음

만약에 primitive type 대신에 int를 interger로 사용하게 되면 heap 에 instance를 생성하게 된다. 이것은 변수 선언시 instance에 대한 메모리를 할당 받아야 하는 메모리 overhead만을 의미하는것이 아니고 객체의 method area를 읽고 할당에 필요한 연산을 수행하는 CPU Overhead까지 필요하다는 것으 ㄹ의미 또한 이를 참조할때마다 class variable 영역을 거쳐 해당 class의 method table을 지나 heap에 instance를 찾아 계속 해서 메모리 점프를 해야한다. 이것은 결국 리소스의 사용률을 높이게 되고 전반적인 성능 저하 요인이 될수 있다.

LenKIM commented 4 years ago

그림이랑 같이 표현되면 좋을 것같은데, 조금더 딥한 정보 없을까요?