자바 대상 공간 점용 은 어떻게 계산 합 니까?

1597 단어 자바
자바 대상 공간 점용 은 어떻게 계산 합 니까?
실례 대상 이 얼마나 많은 공간 을 차지 하 는 지 알 기 위해 서 는 먼저 자바 의 데이터 형식 을 알 아야 한다.
자바 데이터 형식 은 참조 데이터 형식 과 기본 데이터 형식 으로 나 뉜 다.
인용 데이터 형식 은 인용 변수(refvar)와 가리 키 는 실제 대상 두 부분 으로 구성 되 어 있 습 니 다.
인용 변 수 는 기본 데이터 형식 으로 실제 대상 을 가리 키 는 메모리 주 소 를 참조 하여 실제 대상 을 더미 에 저장 합 니 다.
이것 은 자바 방법의 매개 변수 전달 은 값 만 전달 하 는 이 유 를 설명 한다.대상 을 가리 키 는 메모리 주 소 를 방법 매개 변수 중의 부분 인용 변수 에 할당 하 는 것 일 뿐 C+의 인용 전달 과 다 르 기 때문이다.
9 가지 기본 데이터 형식
유형
크기
boolean
1B
byte
1B
char
2B
short
2B
int
4B
long
8B
float
4B
double
8B
refvar
4B
왜 boolean 타 입 은 1B 이지 1bit 가 아 닙 니까?
그것 은 컴퓨터 의 최소 데이터 처리 단위 가 바이트 이기 때문에 불 형식 은 실제 1 자리 만 사용 하지만 다른 7 자 리 를 0 으로 보충 해 1 바이트 에 채 워 야 한다.
계산 을 시작 하기 전에 몇 가지 개념 을 알 아야 한다.
기본 개념
계산 을 시작 하기 전에 몇 가지 개념 을 알 아야 한다.
대상 헤드
두 부분 포함:
  • 대상 태그(해시 코드,GC 태그,GC 단어,동기 잠 금 태그,편향 잠 금 소지 자)는 8B 를 차지한다

  • 4.567917.메타 정보(메타 정 보 는 메타 데이터 Klass 를 가리 키 는 참조),인용 은 바로 4B 를 차지 하 는 것 이다
    정렬 충전
    대상 의 저장 공간 분배 단 위 는 8 바이트 이기 때문에 다시 말 하면 분 배 된 공간 은 8B 의 배수 여야 하 며 12B 만 차지 하면 16B 도 분배 된다.
    계산 공간 점용
    class Demo {
        // +12B       
        // +1B
        byte b;
        // +4B   
        Object obj1;
        // +4B          ,              。
        Object obj2 = new Object();
        // +4B           ,         
        double[] d = new double[1000];
    }

    이렇게 계산 하면 25B 이 고 정렬 충전 원칙 에 따라 32B 를 분배 해 야 한다.
    참고:효율 적 인 자바 개발 매 뉴 얼 코드
    본 고 를 읽 어 주 셔 서 감사합니다. 제 공중 번 호 를 주목 하면 최신 추 송 을 받 을 수 있 습 니 다.그리고 당신 의 관심 도 저 에 게 창작 을 계속 하도록 격려 할 것 입 니 다.감사합니다!

    좋은 웹페이지 즐겨찾기