ExactReallocateOnly

Cache.ExactReallocateOnly property

Ottiene o imposta un valore che indica se la riallocazione deve essere esatta o meno. Se la riallocazione non è esatta, le prestazioni dovrebbero essere superiori.

public static bool ExactReallocateOnly { get; set; }

Valore della proprietà

VERO se la riallocazione è esatta; altrimenti,falso .

Osservazioni

La riallocazione esatta eseguirà la riallocazione della memoria aggiuntiva solo fino al limite superiore specificato. Quando si supera il limite superiore per la memoria in-memory durante la riallocazione, i dati memorizzati nella cache verranno copiati su disco, se possibile. Quando si supera il limite superiore per la memoria del disco durante la riallocazione, il viene generata un’eccezione appropriata. Le prestazioni dovrebbero essere maggiori se questa opzione è disattivata poiché non verrà eseguita alcuna copia aggiuntiva, se possibile, tuttavia ciò potrebbe anche portare al superamento dei limiti superiori specificati per la memoria o il disco.

Esempi

Questo esempio illustra l’uso di Aspose.Imaging.Cache

[C#]

// Per impostazione predefinita, la cartella della cache è impostata sulla directory temporanea locale dell'utente.
// Puoi anche specificare un'altra cartella cache rispetto a quella predefinita come la seguente:
// Cache.CacheFolder = @"D:\\MyTemp";

// La modalità automatica è flessibile ed efficiente
Aspose.Imaging.Cache.CacheType = Aspose.Imaging.CacheType.Auto;

// Il valore predefinito è 0, il che significa che non esiste un limite superiore
Aspose.Imaging.Cache.MaxDiskSpaceForCache = 1073741824; // 1 gigabyte
Aspose.Imaging.Cache.MaxMemoryForCache = 1073741824; // 1 gigabyte

// Non è consigliabile modificare la seguente proprietà in quanto potrebbe influire notevolmente sulle prestazioni
Aspose.Imaging.Cache.ExactReallocateOnly = false;

// In qualsiasi momento puoi controllare quanti byte sono attualmente allocati per la memoria o il disco 
// memorizza nella cache esaminando le seguenti proprietà
long l1 = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
long l2 = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;

// Esegui un po' di elaborazione delle immagini come di seguito
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);

    // dopo aver eseguito il codice sopra, verranno allocati 40000 byte in memoria.
    long diskBytes = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
    long memoryBytes = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;
}

// Le proprietà di allocazione possono essere utilizzate per verificare se tutti gli oggetti Aspose.Imaging sono stati eliminati correttamente.
// Nel caso in cui ti sei dimenticato di chiamare dispose su qualche oggetto, i valori della cache saranno diversi da 0.            
l1 = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
l2 = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;

Guarda anche