inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

Q. static키워드는 왜 사용하며 단점은 무엇인가요? ★☆☆

static 메서드 질문

해결된 질문

319

안농은만나면안농

작성한 질문수 6

0

중복되는 속성을 static으로 선언하는 것은 이해했습니다. 메서드를 static으로 선언하는 이유에 대해서는 의문이 생겼습니다.

a와 b가 대화를 한다고 한다면, 아래와 같이 선언해서 사용하면 되지 않나요?

private void talk(Person other){
    System.out.println(name + " & " + other.name + "이 대화를 시작했다!");
}

또한 static으로 선언하지 않으면 객체마다 메소드가 중복되어 메모리 낭비가 된다고 말씀해주셨는데, 클래스에 대한 메서드 정보는 메모리의 메서드 영역에 한 번만 기록되고, 각 객체가 메서드를 호출할 때, 이 메서드 주솟값을 모든 객체가 동일하게 호출하는 것 아닌가요? 그래서 static으로 선언하는 것이 메모리의 효율성을 증대한다는 것은 잘못된 설명이 아닌가란 생각이 들었어요.

면접 운영체제 기술면접

답변 1

1

큰돌

안녕하세요 안농님 ㅎㅎ

이렇게 보시면 됩니다.

static 메서드의 메모리 효율성 관련 이점은 주로 인스턴스 생성 없이 메서드를 사용할 수 있다는 점에서 비롯됩니다. 객체를 생성하는 데에는 메모리가 사용되며, 특히 큰 객체나 다수의 객체를 생성할 필요가 없는 경우 메모리 사용량을 줄일 수 있습니다. 예를 들어, 유틸리티 함수나 상태를 저장하지 않는 메서드를 static으로 선언함으로써 객체 생성 없이 이러한 메서드들을 사용할 수 있습니다. 예를 들어 Math 클래스의 메서드들은 모두 static입니다.

 

사실 근데.. 엄밀히 말하면 막 그렇게 줄어들지는 않죠.

static 메서드를 사용하는 것은 메모리 효율성을 직접적으로 개선한다기보다는, 객체를 생성하지 않고도 메서드를 사용할 수 있게 함으로써 간접적으로 메모리 사용량을 줄일 수 있는 경우가 있다. 라고 보시면 됩니다.

그래서 어느정도는 효율성이 생긴다. 라고 볼 수 있습니다. 😃

 

감사합니다.

REST API (Self-descriptive messages)

0

25

1

시스템 엔지니어 관련 질문입니다.

0

51

2

오버라이딩 관련하여 질문드립니다.

0

62

2

교착상태의 4가지 필요조건이 필요충분조건이 아닌 이유

0

89

1

렌더 트리, 렌더 레이어와 그래픽 레이어

0

56

2

로컬스토리지, 세션스토리지, 쿠키의 공통점

0

67

1

IPv4가 IPv6보다 빠른 경우

0

98

2

UDP가 전송계층의 역할을 못하는 건 아닌지

0

59

1

Path MTU 발견하였음에도 패킷 분할이 필요한 이유?

0

65

2

교재의 LFU 알고리즘에서 6번이 왜 히트인가요?

0

64

2

페이지 교체 알고리즘? 프레임 교체 알고리즘?

0

81

2

Static 키워드가 메모리에 올라가는 시점

0

77

2

헤더 압축부분 질문드립니다

0

72

2

공유 캐시 관련 질문 드립니다.

0

56

2

컨텍스트는 context와 contextual information으로 나눠진다는게 무슨뜻인가요?

0

198

1

회선과 대역폭의 관계

0

60

2

44강 질문

0

92

2

버스 토폴로지 질문 있씁니다

0

53

1

자바스크립트, xml 문법 관련

0

66

2

전략패턴과 의존성주입 질문

0

69

2

Model이 비즈니스 로직을 담당하나요?

0

106

2

CS 공부 하는 법

0

181

2

큰돌님 블로그에 개념정리해서 올려도될까요!

0

137

2

FIN 세그먼트 질문

0

70

2