2012-12-26 2 views
9

Obliczam używaną pamięć za pomocą następującego kodu ColdFusion.Czy java.lang.Runtime raportuje użycie pamięci dla całego serwera ColdFusion lub tylko jednej strony?

runtime = CreateObject("java", "java.lang.Runtime").getRuntime(); 

Następnie w pętli wykonaj następujące czynności, aby obliczyć używaną pamięć.

var usedGB = (runtime.totalMemory() - runtime.freeMemory())/1024.^3; // bytes -> KB -> MB -> GB 

To mówi mi, że prawie 200 MB jest używanych od samego początku mojej strony. Czy to jest ilość wykorzystywana przez serwer CF, czy może to tylko trochę narzut z mojej strony?

Odpowiedz

6

Runtime podaje kwotę sterty, która została przydzielona. Dotyczy to obiektów i tabel TLAB, więc rzeczywista ilość wykorzystanej pamięci jest nieco mniejsza. Jest to kwota używana przez całą maszynę JVM, w tym serwer ColdFusion lub dowolną inną uruchomioną aplikację lub bibliotekę. Nie ma możliwości śledzenia, ile pojedynczej strony lub wątku jest używane, a pamięć nie jest lokalna dla strony lub wątku.

1

Zarówno totalMemory, jak i freeMemory raportują użycie przez JVM - który, jak się spodziewałem, będzie serwerem CF (chyba, że ​​używasz również innych rzeczy w tej samej maszynie JVM). I oczywiście narzut JVM.

Powiązane problemy