Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The new I/O (NIO) classes in java.nio allow the creation and use of direct buffers. These buffers tremendously increase throughput for repeated I/O activities. However, their creation and reclamation is more expensive than the creation and reclamation of heap-based nondirect buffers because direct buffers are managed using OS-specific native code. This added management cost makes direct buffers a poor choice for single-use or infrequently used cases. Direct buffers are also outside the scope of Java's garbage collector, which ; consequently, injudicious use of direct buffers can cause memory leaks. Frequent Finally, frequent allocation of large direct buffers can cause an OutOfMemoryError.

...

This noncompliant code example uses both a short-lived local object, rarelyUsedBuffer, and a long-lived, heavily used object, heavilyUsedBuffer. Both are allocated in nonheap memory; neither is garbage collected.

...

Direct buffers are beyond the scope of Java's garbage collector , which and can cause memory leaks if they are used injudiciously. In general, direct buffers should be allocated only when their use provides a significant gain in performance.

Bibliography

 

...