jvm 오류 - 동적 대상 나이 판정

2193 단어
가상 기기는 영원히 대상의 나이가 맥스 테뉴링 Threshold에 도달해야만 노년대로 진급할 수 있는 것이 아니다. 만약에 서바이버 공간에서 같은 연령의 모든 대상의 크기가 서바이브 공간의 절반보다 크면 나이가 많거나 같은 대상은 노년대로 직접할 수 있고 맥스 테뉴링 Threshold에서 요구하는 나이를 기다릴 필요가 없다.
jvm를 공부하는 사람들은 기본적으로 위의 말을 읽었는데 여기서 말하는 것은 동적 연령의 판정이다.동적 판정의 조건은 같은 연령의 모든 대상 크기의 총계가 서바이버 공간의 절반보다 크다는 것이다. 그리고 산출된 연령은 맥스틴uringThreshold의 값과 비교해야 한다. 이로써 맥스틴uringThreshold의 설정이 너무 커서 대상이 승진할 수 없다는 것을 보장한다.

문제의 제기


장면 가정


굳이 같은 연령이 아니라면 모든 대상의 크기가 서바이버 공간의 절반 이상이어야 승진할 수 있다.다음 장면을 보도록 하겠습니다.
  • MaxTenuringThreshold는 15
  • 연령 1의 대상이 33%
  • 를 차지
  • 연령 2의 경우 33%
  • 연령 3의 대상이 34% 를 차지한다.

  • 추론을 시작하다

  • 승진 기준에 따라.우선 맥스틴uringThreshold를 만족시키지 못하면 승진하지 않는다.
  • 연령별 대상자는 50%를 충족하지 못합니다.승진하지 못하다.

  • 가설적 결론을 얻다


    Survivor가 100%를 차지했지만 대상은 승진하지 않습니다.구시대에는 분명히 공간이 있었지만 대상은 젊은 세대에 머물렀다.그러나 이 결론은 jvm의 표현과 맞지 않는 것 같다. 오래된 시대에 공간이 있다면 결국 승진할 것이다.

    문제의 해답

    uint ageTable::compute_tenuring_threshold(size_t survivor_capacity) {
        //survivor_capacity survivor 
      size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);
      size_t total = 0;
      uint age = 1;
      while (age < table_size) {
        total += sizes[age];//sizes 
        if (total > desired_survivor_size) break;
        age++;
      }
      uint result = age < MaxTenuringThreshold ? age : MaxTenuringThreshold;
        ...
    }
    
    

    나는 승진 연령을 계산한 코드를 떼어냈다.동적 연령의 계산을 살펴보자.코드에는 TargetSurvivorRatio 값이 있습니다.
    - XX: TargetSurvivorRatio 대상 생존율, 기본 50%
  • 이 비율을 통해 기대치를 계산한다,desiredsurvivor_size .
  • 그리고 토탈 계수기를 사용하여 각 연령대의 대상 크기의 총계를 누적한다.
  • 토탈이 desired보다 크면survivor_사이즈 정지.
  • 그리고 현재age와MaxTenuringThreshold를 비교하여 최소치를 찾아 결과
  • 전체적인 표징은 나이가 어릴 때부터 어른까지 누적되고 어느 연령대에 가입한 후survivor구역*TargetSurvivorRatio를 누적하고 초과할 때 이 연령대 인터넷 연령의 대상에서 승진하는 것이다.

    재연


    아니면 위 장면?연령 1은 33%, 연령 2는 33%로 기본 Target Survivor Ratio(50%)를 누적하고 초과했으며 연령 2와 연령 3의 대상이 모두 승진했다.

    소결


    동적 대상 나이 판단은 주로 Target SurvivorRatio라는 매개 변수에 의해 제어된다.그리고 나이의 어릴 때부터 어른까지의 누적화라고 할 수 있으며, 어떤 연령대의 대상의 크기가 아니다.보고 나서 이 매개 변수를 기억해라. Target Survivor Ratio. 비록 너는 앞으로 기본적으로 그를 조정하지 않겠지만.

    좋은 웹페이지 즐겨찾기