Tablice char stanowią prawie 70% z wykorzystaniem pamięci (!), Podczas gdy rachunków polowych Smyczkowych około 7%
Jest to subtelność profilowania pamięci znanego jako „zatrzymane rozmiar” i „płytkie wielkość”:
- Niewielka wielkość oznacza, ile pamięci jest zajęta przez obiekt, nie licząc każdego dziecka obiektów zawiera. Zasadniczo oznacza to prymitywne pola.
- zatrzymane rozmiar jest płytkie rozmiar plus size innych przedmiotów określonych przez obiekt, ale tylko te inne przedmioty, które są określone tylko przez ten obiekt (trudne do wyjaśnienia, prostą koncepcję).
String jest doskonałym przykładem. Zawiera garść prymitywnych pól plus char[]
. The char[]
stanowi ogromną większość zużycia pamięci. Płytki rozmiar ciągu jest bardzo mały, ale jego zachowany rozmiar jest znacznie większy, ponieważ obejmuje on char[]
.
Profiler NetBeans daje prawdopodobnie niewielki rozmiar, co nie jest zbyt przydatną figurą, ale jest łatwe do obliczenia. Zachowany rozmiar będzie obejmował użycie pamięci o numerze char[]
w celu użycia pamięci o wartości String
, ale obliczenie zachowanego rozmiaru jest kosztowne pod względem obliczeniowym, a profilery nie wykonają tej operacji, dopóki nie zostaną o to wyraźnie poproszone.
Myślę, że masz na myśli char [], nie bajt [] –
Ups. Bardzo zobowiązany. Naprawiony. – skaffman