자바의 변수 수명
컴퓨터 이야기/JAVA 2010. 7. 17. 17:25자바에서는 수명이 다한 클래스의 할당도 어딘가에서 참조 하고 있다면 계속 물고 늘어지는 경향이 있다
A 라는 클래스가 있으면
A foo;
{
A bar = new A();
foo = bar;
} // 여기서 bar 의 수명은 끝이남.
foo.call(); // 과연 에러가 날까?
에러가 안난다. 컴파일에러 및 런타임 에러도 나지 않는다.
자바에서는 내부적으로 참조 카운터를 써서 주소를 다른곳에서 참조하고 있다면 파괴되지 않고 계속 쓰는거 같다.
만약 C++ 였다면? 런타임 에러가 낫겠지.
나는 이것이 좋다고만 보지 않는다. 변수 스코프를 저기서 끝내도록 했으면 프로그래머가 그 뒤론 이 변수를 더 이상 쓰지 않겠다는 의미로 블록을 썼을텐데.
모르는 다른곳에서 나도 모르게 이것을 쓰고 있다면 자칫잘못하면 치명적인 에러로 발전할 수 있기 때문.
뭐 C++ 에서도 지역변수를 포인터로 얻어와서 써도 에러가 나지 않는 경우도 많긴 함.
'컴퓨터 이야기 > JAVA' 카테고리의 다른 글
android studio 단축키 (0) | 2015.12.16 |
---|---|
java string int 형변환 (0) | 2015.12.15 |
android AlertDialog 띄우기 (0) | 2015.12.15 |
어제 수요일에 자바 스터디 모임을 가졌습니다. (0) | 2010.06.24 |