Kom in på det idag.
När skall man använda static och inte.
Fick lite info från en idag om att om man använder static så läggs funktionen i minnet och är där hela tiden medans programmet är igång.
Men om skapar objekt så läggs den ju bara i minnet tills du förstör den.
Alltså om man skall använda funktionen mycket nästan hela tiden så skall man låta den vara static annars inte. Det tycker jag låter mest logiskt. Men om någon vet något att lägga till eller jag har fel på så gör gärna det detta är en hypotes från min sida.
Njä, det är ju inte enbart därför man använder statiska metoder/fält. Fördelen är ju också att man inte behöver skapa instanser av en klass, eller att man kan returnera en statisk instans av en klass med privat konstruktor, t.ex.
Fick lite info från en idag om att om man använder static så läggs funktionen i minnet och är där hela tiden medans programmet är igång.
Men om skapar objekt så läggs den ju bara i minnet tills du förstör den.
Känns lite som en "äpplen och päron"-diskussion. Static är ett nyckelord/begrepp i vissa objektorienterade språk. Hur den fysiska hantering av minnet sen sker är nog helt upp till varje miljö/run-time/tolk.
Men man kan ju gissa att det normalt sker så här:
Icke-statisk medlemsvariabel -> Varje objekt får sin egen kopia av variabeln vilke normalt kräver mer minne än en statisk medlemsvariabel som delas av alla instanser. (Utom när man har exakt 0 objekt.)
Icke-statisk metod -> Eftersom exekverbar kod är read-only så kommer metoden/funktionen bara att laddas en gång i minnet och alla instanser dela samma minnesområde (via nåt pekartjafs). Det skulle vara fånigt att ladda samma funktion på 100 olika ställen i minnet bara för att man har 100 objekt.
I vilken OO- tillämpning vi än pratar om så går det inte åt mer minne - snarare tvärtom, men däremot kan man tänka sig att man torskar lite prestanda eftersom den blir satt som global och det genererar ju mer blockbyten för cacheminnet under runtime. Jag tror inte det är nån skillnad på kod som körs i en VM eller kod som är kompilerad till maskinspråk, ur det hänseendet. Fast det är ju då endast en optimeringsdetalj och som vanligt får man välja mellan att spara minne och eller spara prestanda.
'static' används även i c för att hålla kvar ett värde på en variabel trots att funktionen terminerat (som en privat global), samt till funktioner för att göra dem lokala.
262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e