ExactReallocateOnly

Cache.ExactReallocateOnly property

Obtient ou définit une valeur indiquant si la réallocation doit être exacte ou non. Si la réallocation n’est pas exacte, les performances devraient être plus élevées.

public static bool ExactReallocateOnly { get; set; }

Valeur de la propriété

vrai si la réaffectation est exacte ; Par ailleurs,faux .

Remarques

La réallocation exacte effectuera la réallocation de mémoire supplémentaire uniquement jusqu’à la limite supérieure spécifiée. Lors du dépassement de la limite supérieure pour la mémoire pendant la réallocation, les données mises en cache seront copiées sur le disque si possible. Lors du dépassement de la limite supérieure de la mémoire du disque lors de la réallocation, le l’exception appropriée est levée. Les performances devraient être plus élevées si cette option est désactivée car aucune copie supplémentaire ne sera effectuée si possible, cependant cela peut également conduire à dépasser les limites supérieures spécifiées pour la mémoire ou le disque.

Exemples

Cet exemple illustre l’utilisation de Aspose.Imaging.Cache

[C#]

// Par défaut, le dossier de cache est défini sur le répertoire temporaire local de l'utilisateur.
// Vous pouvez également spécifier un autre dossier de cache que celui par défaut comme suit :
// Cache.CacheFolder = @"D:\\MaTemp" ;

// Le mode automatique est flexible et efficace
Aspose.Imaging.Cache.CacheType = Aspose.Imaging.CacheType.Auto;

// La valeur par défaut est 0, ce qui signifie qu'il n'y a pas de limite supérieure
Aspose.Imaging.Cache.MaxDiskSpaceForCache = 1073741824; // 1 gigaoctet
Aspose.Imaging.Cache.MaxMemoryForCache = 1073741824; // 1 gigaoctet

// Il n'est pas recommandé de modifier la propriété suivante car cela peut grandement affecter les performances
Aspose.Imaging.Cache.ExactReallocateOnly = false;

// A tout moment, vous pouvez vérifier le nombre d'octets actuellement alloués pour la mémoire ou le disque 
// cache en examinant les propriétés suivantes
long l1 = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
long l2 = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;

// Effectuez un traitement d'image comme ci-dessous
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);

    // après avoir exécuté le code ci-dessus, 40 000 octets seront alloués en mémoire.
    long diskBytes = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
    long memoryBytes = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;
}

// Les propriétés d'allocation peuvent être utilisées pour vérifier si tous les objets Aspose.Imaging ont été correctement éliminés.
// Si vous avez oublié d'appeler dispose sur un objet, les valeurs du cache seront différentes de 0.            
l1 = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
l2 = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;

Voir également