2011-07-03 1 views
1

Java에서는 자신의 힙 공간 (예 : 프로그램의 나머지 부분에 영향을 미치지 않고 메모리 부족 오류로 인해 충돌 할 수 있음)에서 작업을 실행하려는 경우, 런타임 .exec를 사용하여 파일 시스템에서 JVM 및 관련 바이트 코드 파일을로드하고 처음부터 Java 프로그램을 시작하기 위해 수행해야하는 모든 작업을 다시 실행하십시오.자체 힙 공간의 서브 타스크

실행하려는 작업이 상당히 세분화되어 있으면 다소 높은 오버 헤드가 발생합니다. 그것을 수행하는 오버 헤드가 낮은 방법이 있습니까?

+0

아마 가장 좋은 방법은 OOME을 얻지 못하도록 코드를 작성하는 것입니다. 그러면 애플리케이션 자체를 보호 할 필요가 없습니다. –

+0

이 경우가 아닙니다. 내 손으로 쓴 코드가 아니라 기계가 생성 한 코드입니다. – rwallace

+0

이 코드는 타사 라이브러리에서 생성합니까? 기계 생성 코드 용 생성기를 작성한 경우 생성 할 수있는 코드를 쉽게 알 수 없습니까? –

답변

3

어쨌든 프로세스 간 통신을하고 있으니 RMI에 대한 옵션을 찾고 있습니까? RMI 데몬을 사용하면 작업을 제출하고 결과를 얻을 수있는 프로세스를 풀링 할 수 있습니다. 이것은 또한 스폰 VM을 수동으로 관리하는 것을 덜어줍니다.

메인 VM이 작업 패킷을 생성하고 하나 이상의 프로세스가 모니터링하는 대기열에 덤프하는 작업 대기열 기반 솔루션을 살펴보십시오. 어쨌든, AFAIK, 이러한 작업을 수행하는 가장 정교한 방법은 VM을 필요에 따라 생성하는 것이 아닙니다.