GC
안에 JVM
사이의 collaboration
과 메모리 페이징을 이해하려고합니다. 나는 4GB RAM
이 있고 1.2GB for JVM
가 할당 된 linux
상자가 있습니다. 과도한 메모리가 필요한 응용 프로그램을 실행하면 메모리 페이징이 발생하고 실제로 메모리 부족 오류가 발생하면 throws
오류가 발생합니다. 객체가 생성되면 힙에 생성되고 사용되지 않는 경우 가비지 수집되거나 응용 프로그램에서 사용되는 경우 살아 있습니다.가비지 수집 + 메모리 페이징
그럼 내 질문은 언제부터 JVM
에 대한 메모리 페이징을 시작하고 OS
에 의해 호출되는 라이브 개체가 발생합니까?
또한 OS 페이지가 Java 객체를 사용하는 경우 먼저 어떤 객체를 페이징해야하는지 우선 순위를 매기는 방법은 무엇입니까? 그것은 대부분의 메모리를 차지하고있는 객체를 페이징합니까?
답장을 보내 주셔서 감사합니다. OS가 페이징을 처리하고 GC가 객체를 YG에서 OG로 이동하여 메모리 관리를 처리한다는 것을 알고 있습니다. 내 질문은 운영 체제 측면에서 메모리 페이징이 발생하고 페이징 된 객체가 OS와 JVM간에 어떻게 처리되는 것입니까? – user826323
OS의 경우 JVM 프로세스는 특별한 액세스가없는 다른 프로세스와 같습니다. 따라서 JVM이 현재 가상 메모리에있는 객체에 액세스하려고 할 때, OS는 가상 메모리에서 객체를 다시 전송하여 사용 가능하게 만듭니다. 한편, OS는 일부 오브젝트 내용을 가상 메모리로 전송할 수 있습니다. 당신이 알고 싶다면, JVM이 운영체제에 콘텐트를 가져오고 다른 페이지를 가져 오는 것에 기반하여 주소에 객체를 놓으라는 OS를 요청할 때 발생한다. – Jatin