자바 시각 을 통 해 국 지적 원 리 를 간단히 이야기 하 다.
프로그램 이 데 이 터 를 방문 할 때 연속 적 인 지역 에 모 이 는 것 을 국 지적 원리 라 고 한다.
시간 과 공간 에 따라 두 가지 유형 으로 나 뉜 다.
본 고 는 주로 CPU 와 운영 체제 의 국부 적 원리 가 자바 백 엔 드 에서 의 영향 과 의 미 를 정리 하고 자 한다.
CPU 공간 국부 성
아래 그림 은 자바 의 메모리 모델 입 니 다.
우 리 는 CPU 가 메모리 에서 데 이 터 를 읽 는 성능 을 향상 시 키 기 위해 L1,L2,L3 세 단계 의 캐 시 를 가지 고 있다 는 것 을 안다.
CPU 는 부분 적 인 원 리 를 이용 하여 메모리 에서 데이터 항목 을 읽 을 때 이 메모리 근처 의 데이터 블록 도 캐 시 에 함께 읽 습 니 다.이 과정 을 미리 읽 는 것 이 라 고 합 니 다.
즉,연속 공간 을 읽 는 메모리 가 메모리 에 무 작위 로 접근 하 는 것 보다 성능 이 높다 는 점 은 자바 프로그램 으로 증명 할 수 있다.
public static void main(String[] args) {
int[][] arr = new int[10000][10000];
int sum = 0;
long startTime = System.currentTimeMillis();
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
sum += arr[i][j];
}
}
System.out.println(" :" + (System.currentTimeMillis() - startTime) + "ms");
sum = 0;
startTime = System.currentTimeMillis();
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
sum += arr[j][i];
}
}
System.out.println(" :" + (System.currentTimeMillis() - startTime) + "ms");
}
이것 은 2 차원 배열 을 순환 적 으로 읽 는 코드 입 니 다.프로그램의 전반 부 는 배열 의 2 차원 시작 순서에 따라 읽 습 니 다.즉,2 차원 배열 은 메모리 연속 공간 순서에 따라 접근 합 니 다.
다음 부분 은 배열 의 첫 번 째 열 에 따라 읽 는 것 이지 순서대로 접근 하 는 것 이 아니다.
각각 10000*10000 번 의 배열 방문 을 거 친 후에 그 운행 결 과 는 다음 과 같다.
이 를 통 해 알 수 있 듯 이 메모리 의 순서 접근 성능 은 무 작위 접근 보다 우수 하 다.
디스크 공간 국부 성
자바 의 일상적인 개발 에서 많은 미들웨어 는 디스크 파일 과 접촉 해 야 한다.이런 디스크 데이터 의 고성능 방문 도 모두 국 지적 원리 에 의존한다.예 를 들 어:
우 리 는 항상 kafka 와 rocketMQ 가 고성능 메시지 미들웨어 라 고 말 하 는데,그 중 일 부 는 디스크 파일 의 순서 에 따라 읽 고 쓰 는 것 이다.예 를 들 어 commt log 의 순 서 를 기록 하고 kafka 에서 partition,rockerMQ 에서 consumerQueue 에서 메시지 의 순 서 를 읽 고 씁 니 다.운영 체 제 를 이용 한 PageCache 메커니즘 도 마찬가지다.
PageCache
페이지 캐 시(PageCache)는 OS 가 파일 에 대한 캐 시 로 파일 에 대한 읽 기와 쓰 기 를 가속 화 하 는 데 사 용 됩 니 다.일반적으로 프로그램 이 파일 을 순서대로 읽 고 쓰 는 속 도 는 메모리 의 읽 기와 쓰기 속도 에 거의 가깝다.주요 원인 은 OS 가 PageCache 메커니즘 을 사용 하여 읽 기와 쓰기 접근 조작 을 성능 최적화 시 켜 일부 메모 리 를 PageCache 로 사용 하기 때문이다.
데이터 기록 에 대해 OS 는 먼저 Cache 에 기록 한 다음 에 비동기 방식 으로 pdflush 커 널 스 레 드 를 통 해 Cache 내 데이터 브러시 를 물리 디스크 에 기록 합 니 다.
데 이 터 를 읽 을 때 한 번 에 파일 을 읽 을 때 PageCache 에 명중 하지 않 은 경우 OS 가 물리 디스크 에서 파일 을 읽 는 데 접근 하 는 동시에 인접 한 블록의 데이터 파일 을 순서대로 미리 읽 습 니 다.
PageCache 는 국 지적 원리 의 실현 이다.
시간 국부 성
시간 국 지성 은 우리 의 일상적인 업무 개발 에서 더욱 뚜렷하게 나타 날 수 있다.
LRU 캐 시 와 유사 한 것 은 모두 구체 적 으로 이 루어 진다.
또한 CPU 의 명령 정렬 도 점 변 을 붙 입 니 다.예 를 들 어 한 데이터 에 대한 접근 계산 은 이 데이터 와 관련 된 명령 을 함께 처리 합 니 다.
레 퍼 런 스
자바 의 시각 을 통 해 국 지적 원 리 를 간단하게 이야기 하 는 이 글 은 여기까지 소개 되 었 습 니 다.자바 의 국 지적 원리 에 관 한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 사랑 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.