[Java] JVM의 피연산자 스택의 피연산자 저장 단위
출처 - 자바의 정성 (남궁 성 지음)
JVM의 피연산자 스택(operand stack)이 피연산자를 4 byte 단위로 저장하기 때문에
크기가 4 byte보다 작은 자료형(byte, short)의 값을 계산할 때는 4 byte로 변환하여 연산이 수행된다.
그래서 오히려 int를 사용하는 것이 더 효율적이다.
이 말인즉슨 short를 사용하여 2 byte 짜리 변수를 선언한다 하더라도 이 변수가 계산에 씌이는 피연산자가 될 경우
JVM은 short변수를 피연산자 스택에 저장하면서 4 byte 로 저장하기 때문에 메모리 절약을 위해서 short 변수를 선언한거라면 메모리 절약에 전혀 도움이 되지 않는다.
게다가 형변환까지 해야 되므로 오히려 손해이다.
C언어도 이렇게 된다고... 어디서 본 것 같은데... 정확히는 모르겠다.
JVM의 피연산자 스택(operand stack)이 피연산자를 4 byte 단위로 저장하기 때문에
크기가 4 byte보다 작은 자료형(byte, short)의 값을 계산할 때는 4 byte로 변환하여 연산이 수행된다.
그래서 오히려 int를 사용하는 것이 더 효율적이다.
이 말인즉슨 short를 사용하여 2 byte 짜리 변수를 선언한다 하더라도 이 변수가 계산에 씌이는 피연산자가 될 경우
JVM은 short변수를 피연산자 스택에 저장하면서 4 byte 로 저장하기 때문에 메모리 절약을 위해서 short 변수를 선언한거라면 메모리 절약에 전혀 도움이 되지 않는다.
게다가 형변환까지 해야 되므로 오히려 손해이다.
C언어도 이렇게 된다고... 어디서 본 것 같은데... 정확히는 모르겠다.
댓글
댓글 쓰기