![]() |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
Zitat:
a.) kein weiteres Objekt a <= 10 Bytes alloziert wird b.) die Objekte vor und nach dieser 10 Bytes Lücke niemals mehr freigegeben werden und somit sich diese 10 Bytes Lücke nicht durch Zusammenfassung freier Blöcke vergrößern kann Heutige Speichermanager sind aber sehr effizient und dieses Problem ist vernachlässigenbar, bzw. wird meiner Meinung nach aus der Perspektive der Optimierungsmöglichkeiten überbewertet. Gruß hagen |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
Zitat:
Der Flickenteppich von verwendeten und wieder freigegebenen Bereichen wird also in 2 homogene Blöcke zusammengeschoben. Da Speicher in beiden System allokiert wird, indem einfach die Grenzlinie von benutztem und freiem Speicher um die gewünschte Anzahl an Bytes verschoben wird, ist Relokalisierung sogar zwingend notwendig. Es ist also kein wirklicher Nachteil von Delphi, und kein wirklicher Vorteil von Java/.Net. Es ist eher Segen (sehr schnelle Bereitstellung von Speicher) und Fluch (Zwang zur Defragmentierung) in einem. :angle2: |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
@Elivis:
Ich habe mal das Wort " Relokalisierung" nachgeschlagen, und es hat immer mit Lokalisierung zu tun, also mit "Ort". Zitat:
Wir haben einen Speicher den wir in 2 Teile splitten. Der 1. Block enthält allozierte gültige Objekte der 2. Block enthält freien Speicher. Die Grenze zwischen diesen Blöcken stellt unsere Heapgrenze dar, also der Ort an dem ein neues Objekt seinen Speicher bekommmt. Wenn das so richtig ist dann ist dies ein stinknormales Verhalten eines jeden Speichermanagers. Ich sehe da jetzt keinen Unterschied der mit "Relokalsierung" -> "örtlichen Verschiebungen" zu tuen haben soll. Denn eine dynamische Defragmentierung kann immer nur freie Speicherblöcke zusammenfassen wenn der Speichermanager die allozierten Blöcke ebenfalls zur Laufzeit verschieben kann. Dies bedeutet aber das alle Refernezen auf diese Speicherblöcke als indirekte Zeiger verwaltet werden müssen, da ansonsten bei direkten Zeigern diese ja nach der Defragmentierung ins Nirwana zeigen. Bei JAVA als "interpretierende" Plattform ist das noch vorstellbar. Gruß Hagen |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
Zitat:
Gruß Hagen |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
Hallo,
Ich bin zwar nicht Robert, habe mich aber mit dem Speichermanager und dem Garbage Collector von .Net etwas beschäftigt. Deshalb antworte ich mal. Zitat:
Zitat:
Zitat:
Gruß xaromz |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
Zitat:
Gruß Hagen |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
Hallo,
Zitat:
Zitat:
Zitat:
Zitat:
Gruß xaromz |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
Zitat:
Zitat:
Wenn mich meine immer weiter schwindenden Kenntnisse von Delphis Internals nicht im Stich lassen, muss der Delphi MM durch eine verkettete Liste lauen um einen passenden Bereich zu finden. Die .Net GC inkrementiert tatsächlich nur einen Zeiger, der die Heapgrenze darstellt. Zitat:
Zitat:
btw: @xaromz, hoffentlich bist du beim nächsten Stammtisch wieder dabei. :) [1]Sicherlich ist das vorübergehend auch in einem GC-basierten System der Fall, aber durch Relokalisierung kann die Heapgrenze immer wieder ein Stück zurückgesetzt werden. |
Re: Macht es Sinn ? Multithreaded Server in Delphi ?
Hallo,
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz