---
title: "När skall man använda static eller inte static?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/87808-när-skall-man-använda-static-eller-inte-static"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "Nickemannen"
published: "2003-10-06T11:46:26.000Z"
updated: "2003-10-06T16:38:05.000Z"
replies: 8
views: 761
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/87808-när-skall-man-använda-static-eller-inte-static"
---

# När skall man använda static eller inte static?

## #1 — Nickemannen, 2003-10-06T11:46Z

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.

Permalänk: https://www.webforum.nu/p/87808

## #2 — SPiN, 2003-10-06T11:58Z

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.

Permalänk: https://www.webforum.nu/p/1178562

## #3 — Nickemannen, 2003-10-06T12:15Z

ja, det är ju det men borde inte static äta mer minne än vad om man skapade instanser av klasser hela tiden ?

Finns det några exempel då man inte skall använda static och när man skall använda static ?

Permalänk: https://www.webforum.nu/p/1178576

## #4 — Engine^, 2003-10-06T12:19Z

Du kan (om du inte redan gjort det) läsa mer om [static](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vastmstatic.asp) (under Remarks).

Permalänk: https://www.webforum.nu/p/1178580

## #5 — Nickemannen, 2003-10-06T12:32Z

Nu har jag gjort det. Kände att det inte riktigt var tillräckligt.

Permalänk: https://www.webforum.nu/p/1178586

## #6 — Engine^, 2003-10-06T12:54Z

Tja... använd inte static för en variabel/funktion om du inte vet att du måste återanvända den ofta.

Lokala variabler är vad du ska använda om variablen endast behöver kännas till temporärt av funktionen.

Det beror till största del av vad du ska använda din funktion till.

Permalänk: https://www.webforum.nu/p/1178615

## #7 — niko, 2003-10-06T14:22Z

> **Nickemannen skrev:**
>
> 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.

Permalänk: https://www.webforum.nu/p/1178671

## #8 — Nickemannen, 2003-10-06T15:36Z

Tackar för svaren.

Vet ni några sidor jag kan läsa mer om detta ?
Jag har sökt men antagligen inte sökt rätt.

Permalänk: https://www.webforum.nu/p/1178710

## #9 — PeW, 2003-10-06T16:38Z

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.

Permalänk: https://www.webforum.nu/p/1178767

---

Tråden på webben: https://www.webforum.nu/amne/programmering/87808-när-skall-man-använda-static-eller-inte-static
