2012-12-02 2 views
2

응용 프로그램 시작 시간을 획기적으로 단축하고 싶습니다.자바 가상 머신의 이미지 파일을 생성하고이를 사용하여 더 빠른 자바 애플리케이션을 시작할 수 있습니까?

자바 가상 머신을 실행하는 프로세스의 메모리 공간에 애플리케이션의 전체 상태를 저장할 수 있다면 새로운 자바 프로세스를 생성하고 메모리 내용을 대체 할 수 있어야한다고 생각한다. 상태가 이미지 파일에 저장됩니다.

내 이론은 내가 이렇게하면 몇 초 빨리 응용 프로그램을 시작할 수 있습니다. 파일을 읽고 jvm의 올바른 메모리 영역에 넣을 수있을 것입니다.

+0

두 가지 문제 - 처음 시작 코드 중 일부는 다시 시작할 때 누락 될 운영 체제 개체를 할당합니다. 둘째 Windows와 Linux 모두 보안을 위해 ASLR (Address Space Layout Randomization)을 사용합니다. 같은 가상 주소가 프로세스 2 회 실행하는 동안 무료라는 보장은 없습니다. –

답변

1

직렬화를 사용하여 응용 프로그램의 상태를 기록한 다음 (객체 그래프의 사이클을 조심하십시오) 시작할 때 직렬화를 역 직렬화 할 수 있지만 JVM 프로세스의 이미지를 만드는 것과 동일하지는 않습니다. 응용 프로그램을 부트 스트랩하기 위해 클래스를로드하고 기본 인프라를 설치해야하므로 동일한 상태 메모리 및 JIT에 있지 않습니다. JVM은 많은 것을 추상화하므로 "올바른 메모리 영역"에 액세스 할 수 없습니다.

응용 프로그램의 시작 시간에 긍정적 인 영향을 주는지 여부는 실제로 상태가 처음로드되는 위치와 빌드하는 데 드는 비용에 따라 달라집니다.

관련 문제