2017-10-13 15 views
0

우선이 질문은 어딘가에 대답해야한다는 것을 알고 있습니다. 그러나 내가 생각하기에 옳은 것을 찾지 않기 때문에이 질문에 대한 답을 찾을 수 없었습니다.메서드 호출 후 원시 로컬 변수는 어떻게됩니까?

그래서 Java 가비지 수집기는 사용되지 않는 객체를 처리하지만 메소드 호출 후에 원시 데이터 유형의 로컬 값은 어떻게됩니까? 메서드 호출 후 foo는 어떻게되는지 예를

public void anyMethod() { 
    int foo = 20; 
} 

를 들어

? 더 이상 사용하지 않더라도 여전히 메모리 어딘가에 있습니까? 나는 그런 "전문성"에 신경을 써야 할까? 개체에 관해서는 참조 만 처리되는 반면 원시적 값 형식에서는 그렇지 않습니다. 어쩌면 나는 또한 원시 값이 자바에도 저장되는 방법을 이해하지 못한다.

누군가가 나를 도울 수 있거나 내 질문이 어리석은 이유를 말해 주면 나는 나 자신에 대해 나쁘다고 생각한다.

안부,

+2

이러한 "전문성"에 신경을 써야할까요? => 아니요 –

+0

관련 : https://stackoverflow.com/questions/39419901/how-to-manually-free-primitive-variables?rq=1 –

답변

4

각 기능은 스택 프레임 실행된다. 메서드 로컬 변수은이 스택 프레임에 메모리가 할당되며 메서드가 완료되면 (예외가 있거나 없음) 스택 프레임의 내용이 삭제되고 그 안에있는 모든 데이터가 손실됩니다.

+2

답변을 완료하려면 https://stackoverflow.com/questions/18746801/are-java-primitives-garbage-collected는 아마도 읽을 가치가 있습니다. –