- Native Memory Allocation in Java
- Logging vs Memory
Even when you use a heap ByteBuffer for I/O, it is copied into a temporary direct ByteBuffer. The JDK caches one temporary buffer per thread, without any memory limits. As a result, if you call I/O methods with large heap ByteBuffers from multiple threads, your process can use a huge amount of additional native memory, which looks like a native memory leak. This can cause your process to unexpectedly run into memory limits and get killed.
- Fixing Java's ByteBuffer native memory "leak"
- jvm-alloc-rate-meter
- Using pmap and gdb to find native memory leak
- Dependency Injection with Dagger 2
- The Netty project
- Prometheus
- Retrofit
- JMH - Java Microbenchmark Harness
- Zipkin - a distributed tracing system
- Log4j 2 - RollingFileAppender example
- Java 8 ConcurrentHashMap has tree buckets if keys implement Comparable. That guarantees O(log N)