>  Q&A  >  본문

jvm - 关于java -Xms参数的疑问

通过java -X看到java -Xms的解释

-Xms<size> set initial Java heap size

但我测试发现,
虽然我的机器内存只有1G,但通过 java -Xms3G -Xmx3G appname可以成功启动应用,那么这个分配机制是怎么的呢?

就是指定了-Xms 3G,但机器内存只有1G的情况下,是怎样分配内存的?

注:

# free -m|grep Swap
Swap:            0          0          0
伊谢尔伦伊谢尔伦2715일 전470

모든 응답(2)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-18 10:23:06

    운영 체제의 메모리 관리 메커니즘으로 인해 각 프로세스에는 가상 주소 공간이 할당됩니다(32비트 시스템에 해당하는 4G 가상 프로세스 주소 공간). 가상 주소 공간은 실제 물리적 메모리에서 프로세스에 필요한 메모리가 실제 물리적 메모리보다 크면 이 메커니즘의 존재로 인해 프로세스의 가상 메모리 주소 중 일부가 디스크에 매핑됩니다. 실제 물리적 메모리보다 더 많이 사용할 수 있을 것 같습니다.

    귀하의 질문에 따르면 JVM에는 3G의 메모리 공간이 필요하지만 실제 시스템에는 1G만 있으므로 운영 체제는 JVM 프로세스에서 일시적으로 사용하지 않는 메모리를 디스크(즉, 스왑 공간)에 저장합니다. 메모리의 일부를 사용하게 되면 메모리 스왑을 통해 디스크에 있는 데이터가 메모리에 쓰이게 되므로 Memory Swap가 자주 발생하면 프로그램이 매우 느려지게 됩니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 10:23:06

    가상 메모리도 사용할 수 있습니다.
    가상 메모리를 줄이거나 직접 비활성화하면 작동하지 않습니다.

    회신하다
    0
  • 취소회신하다