Package net.i2p.util
Class ByteCache
public final class ByteCache extends TryCache<ByteArray>
Cache the objects frequently used to reduce memory churn. The ByteArray
should be held onto as long as the data referenced in it is needed.
For small arrays where the management of valid bytes in ByteArray
and prezeroing isn't required, use SimpleByteArray instead.
Heap size control - survey of usage:
Size Max MaxMem From
1K 32 32K tunnel TrivialPreprocessor
changed to 512 since we disabled resize()
1K 512 512K tunnel FragmentHandler
1K 512 512K I2NP TunnelDataMessage
1K 512 512K tunnel FragmentedMessage
1572 64 100K UDP InboundMessageState
1730 128 216K streaming MessageOutputStream
4K 32 128K I2PTunnelRunner
8K 8 64K I2PTunnel HTTPResponseOutputStream
16K 16 256K I2PSnark
32K 4 128K SAM StreamSession
32K 10 320K SAM v2StreamSession
32K 64 2M UDP OMS
32K 128 4M streaming MessageInputStream
36K 64 2.25M streaming PacketQueue
40K 8 320K DataHelper decompress
64K 64 4M UDP MessageReceiver - disabled in 0.7.14
-
Nested Class Summary
-
Field Summary
-
Method Summary
Modifier and Type Method Description static voidclearAll()Clear everything (memory pressure)static ByteCachegetInstance(int cacheSize, int size)Get a cache responsible for objects of the given size.voidrelease(ByteArray entry)Put this structure back onto the available cache for reusevoidrelease(ByteArray entry, boolean shouldZero)
-
Method Details
-
getInstance
Get a cache responsible for objects of the given size. Warning, if you store the result in a static field, the cleaners will not operate after a restart on Android, as the old context's SimpleTimer2 will have shut down. TODO tie this to the context or clean up all calls.- Parameters:
cacheSize- how large we want the cache to grow (number of objects, NOT memory size) before discarding released objects. Since 0.7.14, a limit of 1MB / size is enforced for the typical 128MB max memory JVMsize- how large should the objects cached be?
-
clearAll
public static void clearAll()Clear everything (memory pressure)- Since:
- 0.7.14
-
release
Put this structure back onto the available cache for reuse -
release
-