Ghlargh wrote:Förklara då varför "minnesdefragmenterare" fungerar även om man inte har någon swap
Jag hävdar fortfarande att dom fungerar... kanske anväder dom ett säkerhetshål i windows för att kunna renska "läckt" minne, vad vet jag?
Allt jag vet är att dom funkar, och att dom inte bara trycker ner det i swappen, sen hur dom funkar är inte lika relevant...
Därför att funkar är inte ett ensidigt begrepp.
Vill se du större siffror i kolumnen för fritt minne* så kan du köra ett treraders
program som allokerar en ziljon meg och sen skriver lite på varje byte och sen
går ur, så får du den effekten, ja. Men det minne som frigjorts var inte så upptaget
att inte OS:et kunde frigjort det själv om den upplevde att behovet fanns.
Det är därför som det "funkar". Som jag sa innan så kan olika delar av minnet
befinna sig i 5-6 olika stadier mellan "oanvänt" till "upptaget".
Om vi gör en tänkt lista:
1. Helt oanvänt
2. Ledigt men inte nollat (man vill ha minnet rent, så de nollas då inget annat sker oftast)
3. Läscache från diskarna. Kan kliva ner till nivå 2 enkelt.
4. Skrivcache. Data som väntar på att komma ut till disk. Gör normalt sett
att skrivningar som ryms i cachen får samma hastighet som en ramdisk. Flushas efter viss tid eller vid behov.
5. Upptaget minne från program. (vanligt upptaget minne)
6. Upptaget minne från kärnan. (styrs enbart av kärnan och dess behov)
Det ett flushprogram gör är att som mest flytta från 4,3 eller 2 till nivå 1.
Den kommer aldrig åt att röra nivå 5 eller 6, vilket är där eventuella läckor
i program eller kerneln skulle visa sig.
Så frågan är: Vad menas med "funkar" i sammanhanget?
Är det att flytta från nivå 4 (rassla ut oskriven data lite fortare än systemet
tänkt sig) och neråt?
För de flesta verkar tro att det skapar mer utrymme genom att ge sig på
nivå 5 & 6 vilket inte alls händer. Däremot rapporterar många verktyg givetvis
bara nivå 1 som "Free", varpå det ser ut som om ens dator bara har ett par
meg ledigt jämt. Och det vore dumt att ha ett par hundra meg fritt (nivå-1-fritt)
om man kan använda det till annat. (nivå 2-3)
Så om "funkar" är samma sak som att "ser bra ut i minneslistningsprogrammet"
så funkar det säkert. Men om man verkligen vill få "mer" minne ledigt skulle
man behöva inkräkta på nivå 5 och 6, vilket är svårt med annat än att man
dödar vissa väl valda processer. (vilket händer då nivå 6 får problem)