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 voidclearAll()Clear everything (memory pressure)static ByteCachegetInstance(int cacheSize, int size) Get a cache responsible for objects of the given size.final voidPut 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
 
 -