Package net.i2p.util
Class ByteCache
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
Nested classes/interfaces inherited from class net.i2p.util.TryCache
TryCache.ObjectFactory<T>
-
Field Summary
Fields inherited from class net.i2p.util.TryCache
_lastUnderflow, capacity, items, lock
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
clearAll()
Clear everything (memory pressure)static ByteCache
getInstance
(int cacheSize, int size) Get a cache responsible for objects of the given size.final void
Put this structure back onto the available cache for reusefinal void
-
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
-