책 내용 질문하기
2021년 3회 1번 문제 (실기 기본서 최신기출문제 10회)
도서
2025 시나공 정보처리기사 실기 기본서
페이지
239
조회수
23
작성일
2025-07-18
작성자
돌로스*숭숭
첨부파일

private static Connection _inst = null; 에서 _inst 는 static으로 선언되었으므로 stack 이 아니라 Data 영역, 혹은 Static 영역에 저장되어 있어야 하는 것 아닌가요?

답에 stack 영역에 저장되어있는 것으로 나와서 질문드립니다.

답변
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 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:30
    JVM 메모리 구조에 stack 영역, heap 영역, static(메소드) 영역 (.. 등 여러가지) 가 있는 거로 보여서요 _inst 가 static 으로 선언이 되어서 stack 영역이 아니라 static(메소드) 영역에 저장이 되어야 하는거 아닌가 싶어서요 (제가 여쭤본건 stack,heap 영역이 아니라 stack,static 영역입니다.) 그니까, stack 영역에 _inst : null 이 아니라, static(메소드) 영역에 _inst : null 이 저장 되야 되는 것 아닌가 여쭙니다.
· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.