Ślad pamięci - Memory footprint

Ślad pamięci odnosi się do ilości pamięci głównej , której program używa lub odwołuje się podczas działania.

Słowo ślad ogólnie odnosi się do zakresu fizycznych wymiarów, jakie zajmuje obiekt, dając poczucie jego wielkości. W informatyce ślad 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 dodatkowych struktur danych, takich jak tabele symboli , debugowanie struktur danych , otwarte pliki, współdzielone biblioteki mapowane na bieżący proces itp., których program kiedykolwiek potrzebuje podczas wykonywania i będą ładowane przynajmniej raz podczas całego uruchomienia.

Większe programy mają większe zużycie pamięci. Zużycie pamięci przez aplikację jest w przybliżeniu proporcjonalne do liczby i rozmiaru ładowanych bibliotek współdzielonych lub klas, podczas gdy biblioteki statyczne, programy wykonywalne i obszary danych statycznych mają swój udział w stałej (stałej) części. Same programy często nie wnoszą największych porcji do własnych śladów pamięci; raczej struktury wprowadzone przez środowisko wykonawcze zajmują większość pamięci. Na przykład kompilator C++ wstawia vtables , typy obiektów info 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 samej wirtualnej maszyny 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ę również są wczytywane do przestrzeni adresowej aplikacji, przyczyniając się w ten sposób do jej śladu.

Trend użytkowania

W latach dziewięćdziesiątych pamięć komputera stała się tańsza, a programy z większą ilością pamięci stały się powszechne. Tendencja ta wynika głównie z powszechnego korzystania z oprogramowania komputerowego, od dużych aplikacji obejmujących całe przedsiębiorstwo, które zużywają ogromne ilości pamięci (takich jak bazy danych ), po intensywnie wykorzystujące pamięć oprogramowanie do tworzenia i edycji multimediów. Aby sprostać stale rosnącym potrzebom w zakresie pamięci , wprowadzono systemy pamięci wirtualnej , które dzielą dostępną pamięć na części o jednakowej wielkości i ładują je ze „stron” przechowywanych na dysku twardym w zależności od potrzeb.

Takie podejście do obsługi programów o ogromnych ilościach pamięci okazało się całkiem udane. Większość nowoczesnych systemów operacyjnych, w tym Microsoft Windows , macOS firmy Apple oraz wszystkie wersje systemów Linux i Unix, zapewniają systemy pamięci wirtualnej.

W systemach wbudowanych

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

Zobacz też

Bibliografia