Nowe posty

xx Dystrybucja pod HP Omen (7)
Dzisiaj o 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
lamp Problem z Linux Lite po instalacji (0)
2024-03-27, 19:50:30
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Zarządzanie pamięcią.  (Przeczytany 1414 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
Zarządzanie pamięcią.
« dnia: 2016-09-26, 08:02:26 »
1. Na ile programowanie C , C++ pozwala na zarządzanie pamięcią RAM , czyli jej zwalnianie gdy jest ona niepotrzebna ?

- Ja nie znam takiej możliwości, ale zgaduję że jeśli program jest w odpowiedni sposób zbudowany
 ( w funkcjach / klasach , osobnych plikach )
 to przy zamykaniu / zabijaniu klas , procesów
pamięć RAM jest automatycznie zwalniana, jeżeli tego nie będziemy pilnować to i RAM nie zostanie zwolnione.
Poza tym  pozwala to na szybszy start aplikacji
( Zaletą jest szybsze uruchomienie programu, wadą jego trochę wolniejsze działanie chwilami )

2.
Teraz trochę z innej beczki ...
Jakiś rok temu, może dwa, na systemie z Init mój Firefox miał 700MB RAM
i generalnie jeśli teraz proces Firefoxa ma 430MB +Web Content 420MB  = 450MB to nie jest żle.
Dzięki nowej technologii
https://blog.mozilla.org/futurereleases/2016/08/02/whats-next-for-multi-process-firefox/
podejrzewam że wymaganie na RAM jeszcze wzrośnie w tępie jakiejś potęgi w zależnośći od ilości otwartych kart.

Gdzie tkwi problem ?
- Zawsze patrzyłem na zużycie RAM w monitorze systemu Mate, ale nie ma tam zużycia przez buffer cache, nie wiem czemu to nie jest sumowane.
http://stackoverflow.com/questions/6345020/linux-memory-buffer-vs-cache
 ( Jest w Mate za to plugin do paska zadań który średnie coś pokazuje )
A widze problem bo zużycie zazwyczaj mam ~54% a buff/cache ~46%  = 100% 8GB
$ free -h
              total       used          free      shared   buf/cache         available
Memory:        7,8G        3,7G        230M        110M        3,8G            3,7G
Podejrzewam że walka o pamięc RAM może także przyczynić się do zamknięcia aplikacji Steam i virtualboxa

Znalazłem jakiś poradnik, czy to i zabijanie aplikacji to jest jedyny sposób czyszczenia pamięci RAM ?
 http://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Zarządzanie pamięcią.
« Odpowiedź #1 dnia: 2016-09-26, 09:39:19 »
1. C/C++ pozwala na 100% zarządzanie pamięcią, w przeciwieństwie do języków z odzyskiwaniem nieużytków (GC). To programista decyduje, kiedy pamięć jest allokowana i kiedy zwalniana i jest to robione deterministycznie.

2. Bufory nie są ujmowane w dziale pamięci użytej, bo z punktu widzenia użytkownika nie zajmują pamięci (jak brakuje pamięci, to bufory są "zero cost free", czyli wywalenie czegoś z bufora nie kosztuje cykli zegarowych). Napełnienie bufora z kolei bywa kosztowne (odczyt z dysku, wynik obliczeń, itp), więc system trzyma bufory jak długo jak się da - jak jest choć strona wolnej pamięci RAM.

Polecenie free jest dla osób, które wiedzą co widzą. Dla Ciebie ten wydruk mówi "masz 4G pamięci do natychmiastowego wykorzystania".  Jeżeli jesteś wyznawcą kultu wolnych megabajtów to cię rozczaruję - pamięć w komputerze masz po to, aby była zajęta - a nie po to, aby była wolna.

A system ci dziwnie działa, bo najwyraźniej nie zrobiłeś swapa (powinien wyświetlić się jako kolejna linijka w free)
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy