2013-04-18 14 views
5

Chcę zbudować system MemoryWarning zgodnie z opisem w wielu artykułach: np. jak w http://www.javaspecialists.eu/archive/Issue092.html.Jak zidentyfikować wolną przestrzeń

Dlatego chcę zidentyfikować zwyczajnych miejsca takiego:

private MemoryPoolMXBean findTenuredGenPool() { 
     for (MemoryPoolMXBean pool : ManagementFactory.getMemoryPoolMXBeans()) { 

       if(pool is tenured space) 
        return tenured 

     } 
    } 

widziałem dwa różne sposoby w celu identyfikacji zwyczajnych przestrzeni

  1. Sprawdź, czy nazwa puli równa „PS Old Gen” i/lub "Tenured Gen".
  2. Sprawdź czy "pool.getType() == MemoryType.HEAP && pool.isUsageThresholdSupported()"

problem z 1: Co o CMS Starego Gen? A co z innymi lokalami? Czy powinienem dodać je wszystkie do listy stałych nazw?

Problem z 2: Czy jest to "bezpieczny" sposób na odzyskanie stałego miejsca? Czy to jest niezawodne?

Dzięki!

Odpowiedz

1

Dla HotSpot JVM ewentualnej nazwy puli pamięci do starej przestrzeni

  • Tenured Gen
  • PS Old Gen
  • CMS Old Gen
  • G1 Old Gen

Dla JRockit

  • Old Space
Powiązane problemy