Hi, Shawn Du It seems you faced next 2 bugs.
First bug: High memory utilization using OffHeap with ExpirePolicy. Issue has a fix, but it is not merged to master yet. See: https://issues.apache.org/jira/browse/IGNITE-3840. Second bug: TTL Manager continue track evicted (and removed) entries, https://issues.apache.org/jira/browse/IGNITE-3948, it seems to be ok for merge, but still is not present in master. You can try to merge them locally or wait until they will be available in master. On Wed, Oct 26, 2016 at 2:35 PM, Shawn Du <shawn...@neulion.com.cn> wrote: > Hi experts, > > > > Can anyone help to explain ignite memory model? > > > > Now I tried following ways, but no effect. > > 1) Remove all indexes. > > 2) enable swap. I see more than 800M’s data are stored in swapspace > directory. > > 3) Don’t cache short life entries. All cache with fifo evict policy > and max size is 10k. > > > > After running for a while, I have a check the caches, there were only 20k > entries, but the memory still grow up? > > > > Please help. > > > > Thanks > > Shawn > > > > > > *发件人:* Shawn Du [mailto:shawn...@neulion.com.cn] > *发送时间:* 2016年10月26日 17:17 > *收件人:* user@ignite.apache.org > *主题:* 答复: ignite used too much memory > > > > Hi > > > > This is the output of jmap histo:live <pid>. > > > > Any useful information? There are about 300k cache entries. Also I enable > swap. > > > > Each entry costs 10K memory in average. But each entry only has 50 bytes > at most. > > > > Any help will be appreciated. > > > > num #instances #bytes class name > > ---------------------------------------------- > > 1: 21642240 519413760 org.apache.ignite.internal. > util.GridCircularBuffer$Item > > 2: 49027 405647408 [Lorg.jsr166.ConcurrentHashMap8$Node; > > 3: 6056069 304233144 [B > > 4: 5754322 279563064 [C > > 5: 11376526 273036624 java.util.concurrent. > ConcurrentSkipListMap$Node > > 6: 5688514 227540560 org.apache.ignite.internal. > processors.query.h2.opt.GridH2KeyValueRowOnheap > > 7: 5684293 181897376 org.apache.ignite.internal. > processors.cache.GridCacheTtlManager$EntryWrapper > > 8: 5333102 170659264 java.util.concurrent. > ConcurrentHashMap$Node > > 9: 5325117 170403744 org.apache.ignite.spi.swapspace.file. > FileSwapSpaceSpi$SwapValue > > 10: 5754728 138113472 java.lang.String > > 11: 5689577 136549848 java.util.concurrent. > ConcurrentSkipListMap$Index > > 12: 5686353 136472472 org.apache.ignite.internal. > processors.cache.KeyCacheObjectImpl > > 13: 5325117 127802808 org.apache.ignite.spi. > swapspace.SwapKey > > 14: 5690452 91047232 org.h2.value.ValueString > > 15: 85112 87930752 [Lorg.apache.ignite.internal. > util.GridCircularBuffer$Item; > > 16: 1515799 48505568 java.util.HashMap$Node > > 17: 268818 42628512 [Ljava.lang.Object; > > 18: 13467 35031504 [Ljava.util.concurrent. > ConcurrentHashMap$Node; > > 19: 361155 23113920 org.apache.ignite.internal. > processors.cache.distributed.dht.atomic.GridDhtAtomicCacheEntry > > 20: 1226922 19630752 java.lang.Integer > > 21: 102183 15207336 [Ljava.util.HashMap$Node; > > 22: 363397 14535880 org.apache.ignite.internal. > binary.BinaryObjectImpl > > 23: 395583 12658656 org.jsr166.ConcurrentHashMap8$Node > > 24: 359176 11493632 org.apache.ignite.internal. > processors.cache.extras.GridCacheTtlEntryExtras > > 25: 363397 8721528 org.apache.ignite.internal. > processors.query.h2.opt.GridH2ValueCacheObject > > 26: 257615 6182760 java.util.concurrent.atomic.AtomicLong > > 27: 170775 5464800 java.util.concurrent.locks. > ReentrantLock$NonfairSync > > 28: 85112 5447168 org.apache.ignite.internal. > processors.cache.distributed.dht.GridDhtLocalPartition > > 29: 85112 5447168 org.apache.ignite.internal. > processors.cache.distributed.dht.GridDhtLocalPartition$1 > > 30: 103188 4953024 java.util.HashMap > > 31: 87751 3510040 org.jsr166.ConcurrentHashMap8 > > 32: 136382 3273168 org.jsr166.ConcurrentLinkedDeque8$Node > > 33: 90699 2902368 org.jsr166.LongAdder8 > > 34: 87277 2792864 java.lang.ref.WeakReference > > 35: 170663 2730608 java.util.concurrent.locks. > ReentrantLock > > 36: 85112 2723584 org.apache.ignite.internal. > processors.cache.GridCacheConcurrentMapImpl > > 37: 85112 2723584 org.apache.ignite.internal. > util.GridCircularBuffer > > 38: 134255 2148080 org.apache.ignite.internal. > processors.cache.CacheEvictableEntryImpl > > 39: 85304 2047296 java.util.concurrent. > CopyOnWriteArrayList > > 40: 10900 1693000 [Lorg.jsr166.ConcurrentLinkedHashMap$ > HashEntry; > > 41: 96594 1545504 java.util.HashSet > > 42: 86086 1377376 java.util.concurrent.atomic. > AtomicInteger > > 43: 85435 1366960 java.util.HashMap$KeySet > > 44: 85002 1360032 org.apache.ignite.internal. > processors.query.h2.opt.GridH2AbstractKeyValueRow$WeakValue > > 45: 44295 1063080 java.util.ArrayList > > 46: 13513 864832 java.util.concurrent.ConcurrentHashMap > > 47: 21090 843600 org.apache.ignite.internal. > processors.cache.version.GridCacheVersion > > 48: 160 653824 [Lorg.apache.ignite.internal. > processors.cache.distributed.dht.GridDhtLocalPartition; > > 49: 5664 637120 java.lang.Class > > 50: 7047 620136 java.lang.reflect.Method > > 51: 10900 610400 org.jsr166.ConcurrentLinkedHashMap$ > Segment > > 52: 12528 601344 java.util.concurrent.locks. > ReentrantReadWriteLock$NonfairSync > > 53: 11566 555168 org.h2.expression.ExpressionColumn > > 54: 16698 400752 java.lang.Long > > 55: 12522 400704 javax.management.MBeanAttributeInfo > > 56: 7878 381504 [I > > 57: 1767 310992 org.h2.command.dml.Select > > 58: 6162 295776 org.apache.ignite.internal. > processors.affinity.GridAffinityAssignment > > 59: 7223 288920 java.util.LinkedHashMap$Entry > > 60: 9276 222624 org.h2.expression.ValueExpression > > 61: 6912 221184 org.h2.expression.Comparison > > 62: 3042 219024 java.lang.reflect.Field > > 63: 12529 200464 java.util.concurrent.locks. > ReentrantReadWriteLock$ReadLock > > 64: 12529 200464 java.util.concurrent.locks. > ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter > > 65: 12529 200464 java.util.concurrent.locks. > ReentrantReadWriteLock$WriteLock > > 66: 1767 197904 org.h2.table.TableFilter > > 67: 2116 186208 org.apache.ignite.internal. > processors.jobmetrics.GridJobMetricsSnapshot > > 68: 1767 169632 org.h2.jdbc.JdbcPreparedStatement > > 69: 5145 164640 org.h2.expression.ConditionAndOr > > 70: 7674 162472 [Ljava.lang.Class; > > 71: 4654 148928 org.h2.expression.Alias > > 72: 1726 137328 [S > > 73: 1767 127224 org.h2.index.IndexCursor > > 74: 7800 124800 java.lang.Object > > 75: 1360 119680 org.apache.ignite.internal.util. > StripedCompositeReadWriteLock$ReadLock > > 76: 1767 113088 org.h2.jdbc.JdbcResultSet > > 77: 1992 111552 java.util.LinkedHashMap > > 78: 4228 101472 org.h2.value.ValueLong > > 79: 2804 89728 java.lang.ThreadLocal$ > ThreadLocalMap$Entry > > 80: 309 88992 org.apache.ignite.configuration. > CacheConfiguration > > 81: 1767 84816 org.h2.command.CommandContainer > > 82: 1172 84384 org.h2.expression.Aggregate > > 83: 777 80808 org.h2.table.Column > > 84: 2502 80064 java.util.concurrent. > ConcurrentSkipListMap$HeadIndex > > 85: 2939 79912 [Lorg.h2.expression.Expression; > > 86: 1870 73152 [Lorg.h2.table.IndexColumn; > > 87: 1798 71920 java.lang.ref.SoftReference > > 88: 17 69904 [Ljava.nio.ByteBuffer; > > 89: 2166 69312 org.apache.ignite.internal. > GridLoggerProxy > > 90: 1715 68600 org.h2.expression.Operation > > 91: 64 66560 [Lorg.apache.ignite.internal. > processors.jobmetrics.GridJobMetricsSnapshot; > > 92: 20 65920 [Ljava.nio.channels.SelectionKey; > > > > > > > > > > *发件人:* Shawn Du [mailto:shawn...@neulion.com.cn <shawn...@neulion.com.cn>] > > *发送时间:* 2016年10月26日 13:25 > *收件人:* user@ignite.apache.org > *主题:* ignite used too much memory > > > > Hi, > > > > In my ignite server, I have several caches, each cache has about 10k > entries. > > I build the entry using binary object. Each entry just has 3 or 4 fields, > each field is short, less than 20 bytes. But I enable index for each field. > > Most entry has set expired time. The expired time is short, about 90 > seconds. > > After run for 2 hours, 8G memory are used, and the ignite run out of > memory. > > I build the ignite from source code, and use yesterdays’ github master > branch code. > > > > My questions: > > 1) Does the expired data release the memory? > > 2) How ignite build the index? How much memory it cost? > > > > Thanks > > Shawn > > > > > > >