Kan ett program ta hur mycket minne som helst?

Tråden skapades och har fått 17 svar. Det senaste inlägget skrevs .
1

Jag har en Intel-mac med 2GB ram-minne. Det har jag tyckt varit rätt mycket för vardagsbruk men det är som att minne aldrig räcker till, hur mycket man än har.

Jag gillar att ha många program igång samtidigt eftersom jag jobbar bäst så. Just nu är dete nio program (iPhoto, Safari, Firefox, iTunes, Mail mfl) plus Findern. Ledigt minne 20MB. Inaktivt 590MB.

- Hur används det inaktiva minne egentligen?
Det är ju en slags ledigt minne som kan användas när ett program behöver det. Men jag märker att när det är så lite ledigt minne som minne börjar datorn ändå swappa (visst säger man så?) till hårddisken om jag växlar mellan olika program. Efter ett tag känns datorn snabb igen. Om jag stänger ner något program och får mer ledigt minne upphör swappandet vid programbyte tills ledigt minne är lågt igen. Alltså är ju det inaktiva minne inte lika bra som det ledig minnet?!

- Kan ett program använda hur mycket minne som helst?
Förra veckan använde iPhoto nästan 900MB verkligt minne, det tycker jag är rätt mycket. Det är bra för det gör att programmet inte behöver swappa till hårddisken så jag klagar inte på det. Men finns det ingen övre gräns? Skulle det kunna ta över säg 1500MB eller sätter systemet stopp någon gång?

Nu funderar jag på att maxa datorn till 4GB medans det ändå är så pass billigt. Men jag misstänker att även det kommer gå åt utan att jag behöver anstränga mig så mycket mer.

  • Medlem
  • Stockholm
  • 2007-07-28 23:47

En förenklad beskrivning:
En process har ett virtuellt adressutrymme som den fyller med program och data. Det maximala adressutrymmet på en 32-bits maskin är <4GB medans en 64-bitsmaskin kan ha mycket större adressutrymme.

Programdelen i processen består (naturligtvis) av programmet i sig, men framför allt (och särskilt under OS X) så finns en stor mängd delade bibliotek (frameworks). Poängen är här att om två program använder t.ex. SQLite eller Core Graphics, så behöver de läsas in i RAM-minnet endast en gång. Båda processerna kan dela på samma RAM-minne. Detta sparar RAM.

Dessa delar av adressutrymmet är skrivskyddade. Ett av programmen kan alltså inte skriva och ändra i Core Graphics och störa något annat program som använder den delen.

Ett program behöver också data. Denna del av minnet kan både läsas och skrivas och är (normalt) endast åtkomligt från en process.

Om man går in i terminalen kan man titta på det virtuella adressutrymmet för en process.

$ vmmap pid

Anta nu att du avslutar iPhoto. Den har en del privata data-areor. Dessa minnesareor kan inte återanvändas utan lämnas tillbaka som ledigt minne.

Vi antar också att iPhoto använde Core Graphics och hade laddat detta i RAM. Ingen annan process använder Core Graphics för tillfället. Då iPhoto avslutas kommer RAM-minnet som innehåller Core Graphics att vara inaktivt. Poängen med detta är att om något annat program skulle börja behöva Core Graphics så ligger det redan i minnet och behöver inte läsas in. Det inaktiva minnet är alltså mer värdefullt än det lediga minnet eftersom det innehåller data som kan återanvändas.

Anta nu att du startar ett annat program som behöver mer minne än vad du har ledigt minne. Vi blir nu tvugna att ta av det inaktiva minnet, kanske den del som hade Core Graphics inladdat. Observera att vi inte nödvändigtvis behöver "swappa" i detta läge eftersom RAM-minnet var skrivskyddat; innehållet i RAM är identiskt med förlagan på hårddisken. Vi kan alltså ta detta RAM-minne precis lika enkelt som vi kan ta ledigt minne. Men nackdelen är att vi nu inte längre har Core Graphics i RAM längre och nästa process som behöver Core Graphics blir nu tvungen att ladda in från hårddisken.

Kan iPhoto ta 1500MB?
Ja, varför inte? De gränser som finns är:
- 32-bits-processer kan ta max 4GB
- En process kan inte ta mer RAM än vad den har virtuellt minne.
Annars kan en process i princip ta hela ditt tillgängliga RAM

  • Medlem
  • Stockholm
  • 2007-08-01 21:07
Ursprungligen av pesc:

Anta nu att du startar ett annat program som behöver mer minne än vad du har ledigt minne. Vi blir nu tvugna att ta av det inaktiva minnet, kanske den del som hade Core Graphics inladdat. Observera att vi inte nödvändigtvis behöver "swappa" i detta läge eftersom RAM-minnet var skrivskyddat; innehållet i RAM är identiskt med förlagan på hårddisken. Vi kan alltså ta detta RAM-minne precis lika enkelt som vi kan ta ledigt minne. Men nackdelen är att vi nu inte längre har Core Graphics i RAM längre och nästa process som behöver Core Graphics blir nu tvungen att ladda in från hårddisken.

Själv tycker jag att OSX är betydligt gladare i att börja swappa än att ta av det inaktiva minnet, vilket är helt åt skogen. Jag har hellre program jag använder i mitt RAM än program jag inte använder, hur fort jag än kanske kunde starta dessa ifall jag skulle vilja använda dessa i framtiden. Det man är ute efter är hur fort man utför aktiviteterna, inte hur fort man kan förbereda sig på att utföra aktiviteten.

Jag kan ha nästan hälften av mitt RAM (1,25GB = totalsiffra) uppdelat på free och inactive, men ändå börjar osx spotta ur sig page outs och swappar som en galning. Detta avhjälper man vanligen genom att logga ut och in igen, men det känns inte som en godtagbar lösning i de flesta tillfällen.

Tack för en begriplig förklaring! Det blir nog till att utöka till 4GB så snart det går. Med 10.5 och 64 bitar känns det som en bra investering om allt nu bara lever upp till hypen!

  • Medlem
  • Stockholm
  • 2007-07-30 20:24

Ja, Safari 3 kan det...

För ungefär en timme sen installerade jag 4GB ram i min MacBook Pro. Har just nu nio program (iPhoto, Safari, Firefox, iTunes, Mail mfl) plus Finder igång.

- Ledigt minne 2,61GB
- Inaktivt minne 802MB (hur kan det var så högt efter 1h?)
- Totalt använt 1,39GB

Detta alltså efter 1h användande. Min egen (säkert felaktiga) slutsats är att operativ och program anpassar sitt minnesätande efter mängden tillgängligt minne och finns det mycket tuggar de i sig så mycket det bara går. Vilket jag inte har några problem för det borde minska swappandet.

Och återigen står det klart att man inte kan ha för mycket minne i datorn och hur dumt det är att tillverkarna inte matar sina datorer fulla (halvfulla vore minimum) redan vid leverans. Man får ju en helt annan datorupplevelse oavsett operativ med mycket minne jämfört med lite minne.

  • Medlem
  • Stockholm
  • 2007-08-02 16:02

Ja, det är verkligen konstigt, tror främst Apple skulle kunna tjänat massor på att proppat sina datorer med minst 1 GB sedan, well, 2 år kanske. Och numera borde det vara kanske 2 GB sedan ett tag.

Men det sälja väl fortfarand nya Macs med 512 väl? Samt Utan DVD-R, väl, idag alltså.

Ursprungligen av Spicey:

Men det sälja väl fortfarand nya Macs med 512 väl? Samt Utan DVD-R, väl, idag alltså.

Jepp. Vad gäller DVD-r måste det nästan vara nån slags differentiering (älskar det ordet) i sortimentet mer än en kostnadsfråga. Superdrive kontra Combodrive kan inte kosta Apple många kronor extra. Och med tanke på de marginaler Apple har känns det som en smäll de kan ta utan problem.

  • Medlem
  • Stockholm
  • 2007-08-02 19:22

Jepps, så är det ju, och nu (eller snart, finns ju med bara cd-r fortfarande) är det väl differentiering mellan dvd-r, kontra dvd-r/dl som gäller, bara för att retas

Ok, nu har jag haft datorn igång ca 10h sen senaste omstarten. Nu har jag 2,12GB (!) inaktivt minne och 128MB ledigt. Har en ca 7-8 program igång.

Här är det möjligt att 2,12GB minne är inaktivt? Nu när det lediga minne är så lågt har jag börjat få korta swappningar som inte uppstod när det fanns gott om ledigt minne.

Vilka program kör du?

Safari, iTunes, Quicktime, Mail, Firefox, iPhoto, Förhandsvisning. Igår var dessutom MS Messenger igång.

Det program som just nu tar mest verkligt minne är Safari med 416MB, sen kommer iPhoto med 397MB.

Just nu aktivt minne: 1,31GB, Inaktivt 2,17GB och Ledigt 44MB.

Jag tror inte detta är något fel, jag förstår bara inte hur systemet kan få till 2GB inaktivt minne på dem program jag haft/har igång. Det verkar inte användas så effektivt eftersom startar jag ett nytt program med så här lite ledigt minne hör jag hur det swappar och blir segt en stund.

Ja nästan.
Tog ett tag innan jag förstod varför allt blev segt som sirap...

Ursprungligen av reboot81:

Ja nästan.
Tog ett tag innan jag förstod varför allt blev segt som sirap...

4 år senare..

TS lär ju inte läsa det här då han inte varit aktiv på över 2 år, men meningen med att ha mycket (RAM) minne är att det ska användas, till "fullo", annars är det rätt så meningslöst.

FCPX tar definitivt allt RAM. Allt annat som är öppet swappas ner på disk och går knappt att använda.

Jag har, som synes nedan, ytterligare en beteckning i aktivitetskontrollen, "Använt minne"
Vilket som synes på bilden är en ganska stor del, någon som vet vad det är.
OS 10.6.8

Ursprungligen av Örjan Borgström:

Jag har, som synes nedan, ytterligare en beteckning i aktivitetskontrollen, "Använt minne"
Vilket som synes på bilden är en ganska stor del, någon som vet vad det är.
OS 10.6.8
[ATTACH="CONFIG"]30167[/ATTACH][ATTACH="CONFIG"]30167[/ATTACH]

Summan av Resident+Aktivt+Inaktivt ?

Ja det verkar ju stämma

1
Bevaka tråden