コード例 #1
0
ファイル: BitmapIndex.cs プロジェクト: liuww111/HootEngine
        /// <summary>
        ///
        /// </summary>
        /// <param name="freeMemory">是否释放内存</param>
        public void Commit(bool freeMemory)
        {
            if (_isDirty == false)
            {
                return;
            }
            using (new L(this))
            {
                log.Debug("writing " + _FileName);
                int[] keys = _cache.Keys();
                Array.Sort(keys);

                foreach (int k in keys)
                {
                    WAHBitArray bmp = null;
                    if (_cache.TryGetValue(k, out bmp) && bmp.isDirty)
                    {
                        this.SaveBitmap(k, bmp);
                        bmp.FreeMemory();
                        bmp.isDirty = false;
                    }
                }
                Flush();
                if (freeMemory)
                {
                    _cache = //new SafeDictionary<int, WAHBitArray>();
                             new SafeSortedList <int, WAHBitArray>();
                    log.Debug("  freeing cache");
                }
                _isDirty = false;
            }
        }
コード例 #2
0
ファイル: Indexes.cs プロジェクト: liuww111/HootEngine
 public void FreeMemory()
 {
     lock (_lock)
     {
         SaveIndex();
         _bits.FreeMemory();
         // free memory
         //_bits.FreeMemory();
         // save to disk
         //SaveIndex();
     }
 }