Zwalnianie zasobów

dział ogólny

Re: Zwalnianie zasobów

Nowy postprzez polymorphism » sobota, 19 grudnia 2009, 14:59

po minimalizacji ulega zmianie tylko pamięć w kolumnie użycie pamięci i to drastycznie bo maleje do 3 MB z 60

Czyli tak jak u mnie. Ale jak pisałem, ta pamięć to pamięć, która rezyduje w RAM-ie. W chwili zminimalizowania system przerzuca część tej pamięci z RAM-u do pliku wymiany, i tyle.

natomiast nie zwiększa się wirtualna wiec nie jest to przesuwane do pliku wymiany....

I znowu. Jak pisałem, pamięć wirtualna z task managera to tak naprawdę prywatna pamięć procesu, która jest tylko częścią pamięci wirtualnej, to są wszelkie new, malloc, calloc itp. Więc dlaczego miałaby się zwiększać?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Zwalnianie zasobów

Nowy postprzez team.4g » sobota, 19 grudnia 2009, 15:12

no dobra to dlaczego używana jest 60 MB (czyli wiecej od pamięci deklarowanej!!!!!), a później 3MB czy to nie jest dziwne??
Avatar użytkownika
team.4g
Bladawiec
Bladawiec
 
Posty: 10
Dołączył(a): piątek, 18 grudnia 2009, 17:22
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder
    NieznanyNieznana

Re: Zwalnianie zasobów

Nowy postprzez polymorphism » sobota, 19 grudnia 2009, 15:22

Nie wiem czy dziwne. Ściągnij process explorer i porównaj wartości private bytes, working set i virtual size. Podejrzewam, że ta ostatnia niewiele się zmienia.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Zwalnianie zasobów

Nowy postprzez team.4g » sobota, 19 grudnia 2009, 15:42

nie zmienia się ....
natomiast zmienia się w zakładce pamięć fizyczna z 60 do 3 MB tak jak zresztą pokazuje menadżer windowsa
Avatar użytkownika
team.4g
Bladawiec
Bladawiec
 
Posty: 10
Dołączył(a): piątek, 18 grudnia 2009, 17:22
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder
    NieznanyNieznana

Re: Zwalnianie zasobów

Nowy postprzez polymorphism » sobota, 19 grudnia 2009, 15:47

Czyli jest tak, jak pisałem...
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Zwalnianie zasobów

Nowy postprzez Cyfrowy Baron » sobota, 19 grudnia 2009, 17:22

co do samego pliku wymiany w systemie XP, nawet wyłącznie go nie oznacza że system nie zrzuca nieużywanych zasobów na dysk, tworzy sobie plik wymiany bez wiedzy użytkownika, i nie jest on widoczny w właściwościach mojego komputera, w zakładce zaawansowane...


Jeżeli wyłączyłeś plik wymiany, czyli go nie masz, to system nie może go sobie utworzyć, co najwyżej, gdy zabraknie mu pamięci po prostu się nie uruchomi wyrzucając niebieski ekran. Wtedy trzeba uruchomić system w trybie awaryjnym i włączyć mu plik wymiany. Jeżeli nie jest widoczny to go nie ma, jeżeli sądzisz, że jest inaczej to sprawdź na dysku C: plik wymiany nosi nazwę pagefile.sys ma atrybuty ukryty i systemowy, więc żeby go zobaczyć musisz włączyć pokazywanie plików ukrytych i systemowych.

Co do tego, że jest to prywatna pamięć wirtualna, to ja od początku o tym właśnie piszę, być może nie użyłem określenia prywatna, ale tez nigdzie nie napisałem, że chodzi mi o całkowitą pamięć wirtualną. Chodzi mi właśnie o to, że proces korzysta niejako z dwóch odrębnych obszarów pamięci. Z pamięci wirtualnej, która stwarza wrażenie, że proces pracuje w jednym dużym i ciągłym obszarze pamięci operacyjnej, podczas gdy fizycznie jest ona pofragmentowana, nieciągła i częściowo przechowywana w pamięci masowej. Pamięć wirtualna niejako "oszukuje" procesy dając wrażenie pracy w ciągłej przestrzeni adresowej. Jeżeli masz włączony plik wymiany, a zazwyczaj wszyscy maja go włączonego nawet gdy mają dużo pamięci RAM rzędu 3 GB, pamięć wirtualna jest tworzona właśnie w tym specjalnym pliku systemowym o nazwie pagefile.sys. Plik ten jest wykorzystywany, gdy menedżer pamięci uwalnia pamięć RAM, nie zmniejszając ilości zaalokowanej pamięci wirtualnej. Dane z pamięci wirtualnej są często zapisywane w pliku wymiany.

Nie wszystko z pamięcią wirtualną, pamięcią operacyjną procesu i plikiem wymiany jest dla mnie jasne. W opisach do pliku wymiany można przeczytać, że jest to specjalny plik systemowy wykorzystywany przez system jako pamięć wirtualna. Pamięć wirtualna jednak istnienie - jak sądzę - niezależnie od pliku wymiany.

Jak ja to rozumiem? Proces po uruchomieniu jest ładowany do pamięci operacyjnej i do pamięci wirtualnej, jednak pamięć operacyjna jest chyba tylko określeniem dla pofragmentowanej pamięci wirtualnej, czyli to co napisałem wcześniej, pamięć wirtualna stwarza wrażenie program znajduje się w jednym obszarze pamięci operacyjne. Tylko dlaczego Menadżer zadań pokazuje Użycie pamięci i Rozmiar pamięci wirtualnej, czym jest jedno i drugie.
Co do pliku wymiany to oczywiste jest jedno, ze jest to plik na HDD i pamięć wirtualna czasami zapisuje dane w tym obszarze co może powodować, że Użycie pamięci w Menadżerze zadań się zmniejsza, np. podczas minimalizacji programu menadżer pamięci przepisuje pamięć operacyjną programu do pliku wymiany by zwolnić nieużywaną w danej chwili pamięć RAM, optymalizując w ten sposób wykorzystanie pamięci fizycznej przez system. To może stwarzać wrażenie, że program zwalnia jakieś zasoby, podczas gdy w rzeczywistości tylko je przepisuje do pliku wymiany. I o to mi od samego początku chodzi. Jeżeli nie rozumiecie, to juz nie wiem jak miałby to inaczej wyrazić.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Zwalnianie zasobów

Nowy postprzez team.4g » sobota, 19 grudnia 2009, 17:49

tzn chodziło mi o to, że przy wyłączonym pliku wymiany system i tak "racjonalnie" przydziela pamięć programom i w przypadku gdy pamięć ta jest niewystarczająca system musi usunąć wiele danych potrzebnych dla tych innych aplikacji... przy odwołaniu się do tych starych znowu musi je wczytać i tak w kółko...
Dlatego można wyłączyć jak ktoś ma wystarczającą ilośc RAM'ów.
Avatar użytkownika
team.4g
Bladawiec
Bladawiec
 
Posty: 10
Dołączył(a): piątek, 18 grudnia 2009, 17:22
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder
    NieznanyNieznana

Poprzednia strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 18 gości