2009-10-07 3 views
1

변수가 프로그램에 얼마나 오래 있는지 (자바로) 알려주실 수 있습니까? 즉 메소드 내부에서 선언 된 변수, 매개 변수에 사용 된 변수, 정적 변수, 메소드에서 복귀하는 데 사용되는 변수 등이 있습니다.프로그램의 변수 수명 (Java)은 얼마나됩니까?

감사합니다.

답변

3
  1. 메서드 내부에서 선언 된 참조는 메서드가 종료 될 때 범위를 벗어납니다.
  2. 메소드에 전달 된 매개 변수는 더 이상 참조가 없거나 범위를 벗어날 때까지 GC에 적합하지 않습니다.
  3. 정적 참조는 클래스와 연결되어 있으며 클래스가로드되어있는 동안에 만 유효합니다.
  4. 반환 된 참조는 더 이상 참조가 없거나 범위를 벗어날 때까지 GC에 적합하지 않습니다.
+0

변수 (1 및 3)를 객체 (2 및 4)와 혼동하고 있습니다. – starblue

+0

변수가 객체 인 경우 어떻게됩니까? 당신은 당신이 원시와 객체를 혼동하는 것처럼 들립니다. – duffymo

+0

변수는 * 객체가 될 수 없습니다. 이것은 완전히 다른 개념입니다. 많아야 변수는 객체에 대한 참조를 포함 할 수 있습니다. – starblue

2

자바의 객체는 root settransitive closure을 통해 참조 할 수있는 한 계속 유지됩니다. 이는 응용 프로그램의 실시간 객체 ¹를 보수적으로 근사하는 것입니다 .¹

편집 :이 질문 개체 수명, 또는 변수 범위와 직결되어 있습니까? 우리는 혼합 용어를 사용합니다.

¹ 라이브 개체는 응용 프로그램이 종료되기 전에 다시 참조 할 개체입니다.

+0

re : 혼합 용어. 농담 아니야. 나는 두피모의 대답이 두 사람 사이에서 앞뒤로 전환하는 방식을 좋아합니다. :-) –