2012-12-19 6 views
1

내가 가진 자바 가상 머신을 시작하면 궁금 : 자바, JVM 및 OS 및 스왑

-Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=256m 
-XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+UseParallelOldGC 
-XX:LargePageSizeInBytes=4m -XX:-BindGCTaskThreadsToCPUs 

그래서 내가 -Xms와 서버를 시작는 "보유"를합니다 I에게 자바 OS 프로세스를 -Xmx 같음 좋은 운영 체제에서 메모리? 따라서이 JVM은 2GB를 가지게 될 것이고, OS가 가지고 있다면 JVM은 프로세스가 다른 것을 시작할 수있게 할 것입니다.

JVM이 2기가바이트 시작 후 운영 체제의 스왑 메모리를 사용할 가능성이 있습니까?

(그래서 스왑 메모리를 사용하지 않고 처음 시작하는 경우)이 가상 메모리 2400 MB의 사용에 시작됩니다

답변

5

. 가상 메모리를 되돌려주지 않습니다. 메인 메모리를 되돌릴 수는 있지만 드물게는 없습니다.

JVM이 2GB로 시작한 후 OS의 스왑 메모리를 사용할 가능성이 있습니까?

이 기술은 '예,하지만 실제로 이것은 매우 잘못된 생각이다. GC 수행시 모든 메모리에 대한 임의 액세스 권한이 있다고 가정합니다. JVM이 스왑을 시작하면 오랜 시간 (수 분) 멈출 수 있고 심지어는 시스템을 정지시킬 수 있습니다. 당신은 약 $ 200 32기가바이트을 구입할 수 있습니다 감안할 때

, 그것은 귀하의 요구에 대한 충분한 메모리를 구입하는 것이 간단합니다. 실제로 일어나는 것이다

+0

는하지만 OS의 원인이 왜 이해하지 않는다 "는 오랜 기간 동안 중지 할 수 있습니다 교환하기 시작"충분히 있다는 것을 보여줍니다 ... 그래서 JVM이 2기가바이트를 사용한다면 그것은 '자신이다 '스왑을 사용할 수있을 때? – Cris

+0

그래서 JVM이 바뀌기 시작할 때? ... – Cris

+2

@Cris 가상 메모리는 프로세스가 필요로하는 것 (거의 항상)을 OS가 수행 할 수 있기 때문에 가상 메모리입니다. 다른 프로세스가 시작되어 컴퓨터의 물리적 메모리를 초과 할만큼 충분한 메모리를 요구하면 OS는 일부 메모리 페이지를 스왑해야하며 일반적으로 더 오래 실행되는 프로세스의 경우이를 수행합니다. –