ExactReallocateOnly

Cache.ExactReallocateOnly property

Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob die Neuzuweisung genau sein soll oder nicht. Wenn die Neuzuweisung nicht exakt ist, sollte die Leistung höher sein.

public static bool ExactReallocateOnly { get; set; }

Eigentumswert

Stimmt wenn die Neuzuweisung genau ist; Andernfalls,FALSCH .

Bemerkungen

Die exakte Neuzuweisung führt eine Neuzuweisung von zusätzlichem Speicher nur bis zur angegebenen Obergrenze durch. Wenn die Obergrenze für In-Memory während der Neuzuweisung überschritten wird, werden die zwischengespeicherten Daten nach Möglichkeit auf die Festplatte kopiert. Wenn die Obergrenze für Festplattenspeicher während der Neuzuweisung überschritten wird entsprechende Exception wird geworfen. Die Performance sollte höher sein, wenn diese Option ausgeschaltet ist, da möglichst kein zusätzlicher Kopiervorgang durchgeführt wird, dies jedoch auch dazu führen kann, dass angegebene Speicher- oder Plattenobergrenzen überschritten werden.

Beispiele

Dieses Beispiel demonstriert die Verwendung von Aspose.Imaging.Cache

[C#]

// Standardmäßig ist der Cache-Ordner auf das lokale temporäre Verzeichnis des Benutzers eingestellt.
// Sie können auch einen anderen Cache-Ordner als den Standard wie folgt angeben:
// Cache.CacheFolder = @"D:\\MyTemp";

// Der Auto-Modus ist flexibel und effizient
Aspose.Imaging.Cache.CacheType = Aspose.Imaging.CacheType.Auto;

// Der Standardwert ist 0, was bedeutet, dass es keine Obergrenze gibt
Aspose.Imaging.Cache.MaxDiskSpaceForCache = 1073741824; // 1 Gigabyte
Aspose.Imaging.Cache.MaxMemoryForCache = 1073741824; // 1 Gigabyte

// Es wird nicht empfohlen, die folgende Eigenschaft zu ändern, da dies die Leistung stark beeinträchtigen kann
Aspose.Imaging.Cache.ExactReallocateOnly = false;

// Sie können jederzeit überprüfen, wie viele Bytes derzeit für Speicher oder Festplatte zugewiesen sind 
// zwischenspeichern, indem Sie die folgenden Eigenschaften untersuchen
long l1 = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
long l2 = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;

// Führen Sie eine Bildverarbeitung wie unten durch
Aspose.Imaging.ImageOptions.GifOptions options = new Aspose.Imaging.ImageOptions.GifOptions();
options.Palette = new ColorPalette(new Aspose.Imaging.Color[] { Aspose.Imaging.Color.Red, Aspose.Imaging.Color.Blue, Aspose.Imaging.Color.Black, Aspose.Imaging.Color.White });
options.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream(), true);
using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Create(options, 100, 100))
{
    Aspose.Imaging.Color[] pixels = new Aspose.Imaging.Color[10000];
    for (int i = 0; i < pixels.Length; i++)
    {
        pixels[i] = Aspose.Imaging.Color.White;
    }

    image.SavePixels(image.Bounds, pixels);

    // Nach Ausführung des obigen Codes werden 40000 Bytes im Speicher zugewiesen.
    long diskBytes = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
    long memoryBytes = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;
}

// Die Zuordnungseigenschaften können verwendet werden, um zu prüfen, ob alle Aspose.Imaging-Objekte ordnungsgemäß verworfen wurden.
// Falls Sie vergessen haben, dispose für ein Objekt aufzurufen, werden die Cache-Werte von 0 abweichen.            
l1 = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
l2 = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;

Siehe auch