Ślad pamięci

Zużycie pamięci odnosi się do ilości pamięci głównej używanej przez program lub do której odwołuje się podczas działania.

Słowo ślad ogólnie odnosi się do zakresu wymiarów fizycznych, które zajmuje obiekt, dając poczucie jego wielkości. W informatyce wielkość pamięci aplikacji wskazuje jej wymagania dotyczące pamięci w czasie wykonywania podczas wykonywania programu. Obejmuje to wszelkiego rodzaju aktywne regiony pamięci, takie jak segment kodu zawierający (głównie) instrukcje programu (i czasami stałe), segment danych (zarówno zainicjowany, jak i niezainicjowany), pamięć sterty , stos wywołań oraz pamięć wymaganą do przechowywania wszelkich dodatkowych struktur danych, takich jak tablice symboli , debugowanie struktur danych , otwarte pliki, współdzielone biblioteki zmapowane do bieżącego procesu itp., których program kiedykolwiek potrzebuje podczas wykonywania i które zostaną załadowane przynajmniej raz podczas całego przebiegu.

Większe programy mają większe rozmiary pamięci. Rozmiar pamięci aplikacji jest w przybliżeniu proporcjonalny do liczby i rozmiarów ładowanych przez nią bibliotek współdzielonych lub klas, podczas gdy biblioteki statyczne, programy wykonywalne i obszary danych statycznych stanowią stałą (stałą) część. Same programy często nie mają największego udziału we własnych śladach pamięci; raczej struktury wprowadzone przez środowisko wykonawcze zajmują większość pamięci. Na przykład kompilator C++ wstawia vtables , wpisz info obiekty oraz wiele tymczasowych i anonimowych obiektów, które są aktywne podczas wykonywania programu. W programie Java ślad pamięci składa się głównie ze środowiska wykonawczego w postaci maszyny wirtualnej Java (JVM), która jest ładowana pośrednio podczas uruchamiania aplikacji Java. Ponadto w większości systemów operacyjnych pliki dyskowe otwierane przez aplikację są również wczytywane do przestrzeni adresowej aplikacji, przyczyniając się w ten sposób do jej rozmiaru.

Trend użytkowania

W latach 90. pamięć komputerów stała się tańsza, a programy o większej pojemności pamięci stały się powszechne. Trend ten wynika głównie z powszechnego korzystania z oprogramowania komputerowego, od dużych aplikacji w całym przedsiębiorstwie, które zużywają ogromne ilości pamięci (takich jak bazy danych ), po oprogramowanie do tworzenia i edycji multimediów intensywnie korzystające z pamięci. Aby sprostać stale rosnącym potrzebom w zakresie pamięci, pamięci wirtualnej , które dzielą dostępną pamięć na równe części i ładują je ze „stron” przechowywanych na dysku twardym w miarę potrzeb.

To podejście do wspierania programów z ogromnymi śladami pamięci było całkiem udane. Większość nowoczesnych systemów operacyjnych, w tym Microsoft Windows , macOS firmy Apple oraz wszystkie wersje systemów Linux i Unix, udostępnia systemy pamięci wirtualnej.

W systemach wbudowanych

Tradycyjnie programy o niskim zużyciu pamięci były ważne dla uruchamiania aplikacji na platformach wbudowanych, gdzie pamięć była często ograniczonym zasobem – do tego stopnia, że ​​programiści zazwyczaj poświęcali wydajność (szybkość przetwarzania) tylko po to, aby rozmiary programów były wystarczająco małe, aby zmieściły się w dostępnej BARAN. Na przykład firma Sun Microsystems wydała wersję swojej wirtualnej maszyny Java (JVM) dla takich ograniczonych urządzeń; nosi nazwę KVM . KVM działa na platformach, na których pamięć jest wyrażona w kilobajtach , a nie w megabajtach (lub nawet gigabajtów ) pamięci dostępnej na zwykłym domowym komputerze PC lub bardziej nowoczesnych inteligentnych urządzeniach.

Zobacz też