자바 프로 세 스 는 어떻게 Linux 서버 에서 메모리 분 배 를 합 니까?

자바 프로 세 스 가 시 작 될 때 우 리 는-Xms 와-Xmx 를 통 해 메모리 의 상한 과 하한 선 을 설정 할 수 있다 는 것 은 잘 알려 져 있다.top 명령 으로 감시 하 는 자바 프로 세 스 가-Xms 에서 4g 를 설정 한 상태 에서 사용 하 는 메모리 가 4g 이 아니 라 는 것 을 알 게 될 때 까지 리 눅 스 서버 의 메모리 가 어떻게 분배 되 는 지 의문 이 생 겼 다.
그래서 나 는 알 고 있 는 과정 과 리 눅 스 관련 책 을 찾 아 보 았 다.여기 서 관련 지식 을 공유 하고 기록 합 니 다.
Linux 에서 실행 되 는 프로 세 스 는 자바 에 만 국한 되 지 않 습 니 다.논리 메모리(Logic Memory)라 는 개념 이 있 는데 물리 기 는 정말 가지 고 있 는 메모리 입 니 다.우 리 는 물리 메모리(Physic Memory)라 고 부 릅 니 다.

프로 세 스 가 실 행 될 때 물리 적 메모 리 를 직접 분배 하지 않 습 니 다.프로 세 스 는 메모리,즉 논리 적 메모 리 를 가지 고 있다 고 생각 할 뿐 입 니 다.프로그램 이 실행 할 때 메모리 할당 이 필요 할 때 Linux 서버 는 페이지(Page)에서 작은 4k 로 분 배 됩 니 다.물리 적 메모리 와 논리 적 메모리 의 관 계 를 일대일 로 매 핑 합 니 다.보 셨 습 니까?
이렇게 하면 좋 은 점 이 무엇 입 니까?1.프로 세 스 간 에 서로 격 리 되 어 있 습 니 다.2 프로 세 스 는 독립 적 이 고 연속 적 인 메모리 3 을 차지 하고 있다 고 생각 합 니 다.물리 적 메모리 보다 더 큰 메모리 공간 을 신청 할 수 있 습 니 다.
세 번 째 는 어떻게 이해 하 죠?사실 리 눅 스 는 여기 서 swap 라 는 메커니즘 을 설계 했다.프로 세 스 가 할당 한 메모리 공간 이 물리 적 메모 리 를 초과 할 때 각 프로 세 스 가 실행 하 는 메모리 가 정말 이렇게 많 으 면 물리 적 메모 리 를 초과 하면 swap 를 촉발 하여 CPU 를 가지 고 있 지 않 은 일부 프로 세 스 의 메모리 데이터 와 디스크 를 io 데이터 교환 하 는 것 이다.CPU 가 한 시간 에 모든 메모 리 를 초과 할 수 없 기 때문에 이런 최적화 로 인해 메모 리 를 더 신청 할 수 있 게 되 었 습 니 다.아마 원래 메모리 의 2-3 배 일 것 입 니 다.이것 은 굉장 합 니 다.왜냐하면 메모 리 는 매우 비 싸 기 때 문 입 니 다.
Swap 는 좋 지만 문제 도 가 져 왔 습 니 다.
예 를 들 어 잦 은 Swap 는 메모리 작업 을 디스크 의 IO 작업 으로 전환 시 켜 프로 세 스 의 운행 속 도 를 늦 출 수 있 습 니 다.그래서 Swap 는 제 이해 에 있어 서 프로 세 스 를 붕괴 시 키 지 않 고 적당 하 게 사용 하면 원 가 를 줄 일 수 있 고 부당 한 사람의 사용 이 반식 되 는 체제 에 속 합 니 다.
물론 너무 부당 하면 프로 세 스 가 무 너 집 니 다.Swap 는 Buffer 와 유사 한 메커니즘 으로 크기 가 있 습 니 다.설정 한 상한 선 을 초과 하면 Kernel 커 널 에서 OOM Killer 를 터치 하여 일부 프로 세 스 의 공간 을 비 웁 니 다.
이상 은 자바 프로 세 스 가 리 눅 스 서버 에서 메모리 분 배 를 어떻게 하 는 지 에 대한 상세 한 내용 입 니 다.자바 프로 세 스 메모리 분배 에 관 한 자 료 는 다른 관련 글 에 주목 하 십시오!

좋은 웹페이지 즐겨찾기