private static Connection _inst = null; 에서 _inst 는 static으로 선언되었으므로 stack 이 아니라 Data 영역, 혹은 Static 영역에 저장되어 있어야 하는 것 아닌가요?
답에 stack 영역에 저장되어있는 것으로 나와서 질문드립니다.
안녕하세요. 길벗 수험서 운영팀입니다.
교재에 설명이 되어있듯 객체 변수를 선언만하면 stack 영역에 내용이 없이 저장이 됩니다
객체 변수를 생성한다는 것은 Connection _inst = new Connection( );과 같이
객체 생성 예약어인 new를 통해 heap 영역에 공간을 확보하여
Connection 클래스의 내용을 저장한 후 그 주소를 객체 변수에 저장하는 것인데,
private static Connection _inst = null; 에서는 객체 생성 예약어인 new가 생략되었으므로 생성이 아닌 선언만 합니다.
객체 변수를 선언만 하게 되면 heap이 아닌 stack 영역에 내용 없이 저장되어 사용이 불가능합니다.
이후 _inst = new Connection( );과 같이 객체 생성 예약어인 new가 사용되어야만heap 영역에 내용이 저장되고
그 주소도 객체 변수에 전달되면서 사용 가능한 객체 변수가 됩니다.
행복한 하루되세요.^^
-
관리자2025-07-18 19:35:31
안녕하세요. 길벗 수험서 운영팀입니다.
교재에 설명이 되어있듯 객체 변수를 선언만하면 stack 영역에 내용이 없이 저장이 됩니다
객체 변수를 생성한다는 것은 Connection _inst = new Connection( );과 같이
객체 생성 예약어인 new를 통해 heap 영역에 공간을 확보하여
Connection 클래스의 내용을 저장한 후 그 주소를 객체 변수에 저장하는 것인데,
private static Connection _inst = null; 에서는 객체 생성 예약어인 new가 생략되었으므로 생성이 아닌 선언만 합니다.
객체 변수를 선언만 하게 되면 heap이 아닌 stack 영역에 내용 없이 저장되어 사용이 불가능합니다.
이후 _inst = new Connection( );과 같이 객체 생성 예약어인 new가 사용되어야만heap 영역에 내용이 저장되고
그 주소도 객체 변수에 전달되면서 사용 가능한 객체 변수가 됩니다.
행복한 하루되세요.^^
-
돌로스*숭숭2025-07-18 20:34:30JVM 메모리 구조에 stack 영역, heap 영역, static(메소드) 영역 (.. 등 여러가지) 가 있는 거로 보여서요 _inst 가 static 으로 선언이 되어서 stack 영역이 아니라 static(메소드) 영역에 저장이 되어야 하는거 아닌가 싶어서요 (제가 여쭤본건 stack,heap 영역이 아니라 stack,static 영역입니다.) 그니까, stack 영역에 _inst : null 이 아니라, static(메소드) 영역에 _inst : null 이 저장 되야 되는 것 아닌가 여쭙니다.