Esempio n. 1
0
        public void outOfMemoryTest()
        {
            const int quante  = 1000;
            string    nomeImg = Costanti.getNomeImmagineRandom();

            GestoreImmagineSrvImpl impl = (GestoreImmagineSrvImpl)(LumenApplication.Instance.getServizioAvviato <IGestoreImmagineSrv>());
            BitmapSource           bmp2 = new BitmapImage(new Uri(nomeImg));
            IImmagine immagine          = new ImmagineWic(bmp2);

            // Ricavo la memoria libera prima del test
            GC.Collect();
            long memoryPrima = Process.GetCurrentProcess().WorkingSet64;

            for (int ii = 0; ii < quante; ii++)
            {
                string tmpFile = System.IO.Path.GetTempFileName();

                if (1 == 1)
                {
                    impl.save(immagine, tmpFile);
                }
#if FALSO
                if (1 == 0)
                {
                    // cosi funziona
                    impl.save2(bmp2, tmpFile);
                }
                else
                {
#endif
                using (FileStream fileStream = new FileStream(tmpFile, FileMode.Create)) {
                    JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(((ImmagineWic)immagine).bitmapSource));
                    encoder.Save(fileStream);
                    fileStream.Close();
                }
#if FALSO
            }
#endif
                System.IO.File.Delete(tmpFile);

                long memoryDurante = Process.GetCurrentProcess().WorkingSet64;

                long diffDurante = (memoryDurante - memoryPrima);

                if ((ii % 10) == 0)
                {
                    Console.WriteLine("consumo = " + (diffDurante / 1024));
                }

                // Se supero il massimo impostato, probabilmente il gc non sta pulendo.
                if (diffDurante > maxMem)
                {
                    Assert.Fail("Probabilmente si sta consumando troppa memoria: diff(MB)=" + diffDurante / 1024);
                }
            }

            immagine.Dispose();
        }
Esempio n. 2
0
        public void outOfMemorySimpleTest()
        {
            string       nomeImg = Costanti.getNomeImmagineRandom();
            BitmapSource bmp     = new BitmapImage(new Uri(nomeImg));

            long memoryBefore = Process.GetCurrentProcess().WorkingSet64;

            for (int ii = 0; ii < 500; ii++)
            {
                saveBitmapToFile(bmp);

                long memoryAfter = Process.GetCurrentProcess().WorkingSet64;
                long consumption = (memoryAfter - memoryBefore);

                // Check memory low
                if (consumption > (800 * 1000 * 1000))
                {
                    Assert.Fail("Memory low. Consuption=" + (consumption / 1024) + "MB");
                }
            }
        }