Speicher nur Garbage Collector ? Speicher nur Garbage Collector ?
Ergebnis 1 bis 5 von 5
  1. Tach auch,

    als eingefleischter Macianer und iPhone Entwickler versuche ich mich nun seit einigen Tagen in der Windows Phone Entwicklung. Alles was ich bisher hinbekommen wollte ist soweit auch ganz gut geglückt. Nun stelle ich mir allerdings die Frage, ob ich eigene Objekte auch selbst Freigeben kann. In allen Tutorials wurde Speicher wie Wild alloziert und nicht selbstständig freigegeben, was meiner Meinung nach bei Größeren Programmen "Wie meins" zum Problem werden könnte.

    Auch würde ich gern Wissen wie die automatische Speicherverwaltung zwischen Pages genau abläuft. Beispiel:

    Ich habe mehrere Pages, in denen ich Werte eintragen kann. Klicke ich nun einen HyperlinkButtton öffnet er mir eine neue Page und erstellt mir eine neue Instanz der gelinkten Page dar. Gehe ich nun mittels HyperlinkButton zurück wird mir wieder eine neue Instanz der alten Page erstellt, was via zurück Button auf dem Gerät ja nicht der Fall ist. Wie kann man solch ein Verhalten von vorn herein unterbinden?

    Zur Werte Verwaltung: Gibt es keinen besseren Weg, als die Werte der vorherigen Page kurz ins Dictionary des PhoneApplicationService zu kopieren? Ich mein "Theoretisch", kann es die SW doch schon selbst. Als Beispiel wäre hier wieder die Navigation von einer bestehenden zur neuen instanz und wieder zurück über den zurück Button auf dem Gerät.
    0
     

  2. 05.12.2010, 15:28
    #2
    Nein, in C#/VB gibt es generell keine Möglichkeit Objekte selbst freizugeben - man kann jedoch den Garbage Collector dazu anregen sofort tätig zu werden mittels GC.Collect() (siehe auch: http://msdn.microsoft.com/en-us/libr...57(VS.95).aspx).

    Wenn du tatsächlich weißt dass du gerade viel nicht mehr refrenzierst, dann kann das evtl. interessant sein - generell ist es aber immer eine gute Idee sich eher darauf zu konzentrieren wirklich keine Referenzen mehr zu haben (weil die Objekte sonst vom GC nicht weggeräumt werden) als darauf sie wegzuwerfen (dafür gibt es dann nie Zeiger die ins nichts gehen).

    Vom Design her sind die Pages eigentlich so gedacht, dass man alle für sie relevanten Parameter wirklich als Page-Parameter mitgibt und den Rest eben persistiert (wie in der Web-Programmierung). Das ist vor allem auch deshalb wichtig, damit die Anwendung auch nach dem Tombstoning funktioniert (da wird nämlich eben nur das Dictionary und die Page-URLs aufgehoben, der Prozess der App wird da beendet und beim Neustart ja nur dorthin navigiert wo man vorher war (also auf die Page-URL)).

    D.h. insbesondere auch, dass der Zurück-Button (so er wirklich auf die alte Instanz zurückgeht) dann spätestens nach dem Tombstoning auch wieder auf eine neue Instanz kommen würde.

    Zur Speicherverwaltung generell - sobald es keine Referenz auf ein Objekt mehr gibt, die von irgendeinem Thread aus erreichbar ist (man also sowieso keinen Zugriff mehr darauf hat - es wird auch erkannt wenn zwei Objekte die sich gegenseitig referenzieren vom Programm aus nicht mehr erreichbar sind) wird es früher oder später weggeworfen - wenn wenig Speicher da ist, dann halt eher früher als später.

    Wie man das mit den Werten löst ist eine gute Frage - man kann das ganze natürlich auch XML-Serialisieren statt direkt im Dictionary abzulegen. Persistiert man die Werte allerdings sofort hat man später auch keine Kopfschmerzen mit dem Tombstoning. Ansonsten ist das Dictionary wohl momentan die "Best Practice" - zumindest ist es der Weg der bisher in praktisch allen von Microsoft hergezeigten Tutorials gewählt wurde.
    1
     

  3. Vielen dank für deine Präzise Antwort. Ich hoffe hier weiterhin auf solche Hilfen

    Ist echt ein Umstieg für mich, da auf dem iPhone kein GC existiert und alles über Reference Couting abläuft.
    0
     

  4. 05.12.2010, 17:37
    #4
    Na ja, der Umstieg zwischen Managed und Native halt. Wer weiß was er tut kann mit Native mehr Performance rausholen (weil man viele Checks die die Managed Umgebung immer macht halt weglassen kann, Array-Überlauf, etc. - zumindest in C++ vs. C# - in C# kommt da immer eine Exception in C++ ist das immer so ne Frage obs gleich kracht, später oder gar nicht (aber dann is irgendwas anderes kaputt)). Hast bisher mit C++ oder Objective C gearbeitet?

    Na egal, freut mich wenn ich dir weiterhelfen konnte. Ansonsten alles Gute für weitere Projekte und den Umgang mit C#.
    0
     

  5. Wer weiß was er tut kann mit Native mehr Performance rausholen
    Yep und bislang bin ich auch so ziemlich gut gefahren.

    Zitat Zitat von StevieBallz Beitrag anzeigen
    Hast bisher mit C++ oder Objective C gearbeitet?
    Angefangen hat alles bei mir mit der Webentwicklung, bis ich dann vor 6 Jahren mit Objective C angefangen habe und dran geblieben bin. Derzeit lerne ich neben C# noch C++.

    freut mich wenn ich dir weiterhelfen konnte. Ansonsten alles Gute für weitere Projekte und den Umgang mit C#.
    Ja sehr sogar. Mein eigenes App werde ich denke ich gegen ende nächster Woche fertigstellen. Wie lange dauert der Einstellungsprozess bei MS eig. im normalfall ?
    0
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 08.10.2010, 19:28
  2. Antworten: 3
    Letzter Beitrag: 17.08.2010, 00:42
  3. Antworten: 7
    Letzter Beitrag: 11.08.2009, 21:26
  4. Geräte SPeicher vs. Interner Speicher
    Von tuxianer im Forum HTC Touch Diamond
    Antworten: 7
    Letzter Beitrag: 20.04.2009, 22:07
  5. Speicher voll, trotz 4GB freiem Speicher??!!
    Von darkmanxny im Forum Touch HD Sonstiges
    Antworten: 2
    Letzter Beitrag: 07.03.2009, 12:00

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

Garbage Collection c# wp7

Windows 7 Garbage Collector

windows phone 7 garbage collection

garbage collector windows phone 7windows 7 garbage collectionwindows phone speicherverwaltungphone 7 garbage collectorgarbage collector phone 7windows garbagephone 7 page schliessenc# phone 7 page vor und zurück navigierenspeicherverwaltung windows phonec# windows phone page schließenpocketpc.ch windows phone 7 speicher wegwie speichere ich daten bei windows phone 7 entwicklungvb6 garbage collection -.netwindows phone 7 garbage collectorSpeichermanagement (Tombstoning)windows phone 7 objekt auf einer pager erstellen zugriff auf andere pagewin phone 7 programm beenden c#Garbidge Collector Phone 7windows phone objekte speichernwindows phone 7 objekte speichern.net speichernutzung garbage collectorspeicher garbage

Stichworte