Home / Class/ CleanableDirectBufferImpl Class — netty Architecture

CleanableDirectBufferImpl Class — netty Architecture

Architecture documentation for the CleanableDirectBufferImpl class in CleanerJava24Linker.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  6fa1ae34_46bc_90dc_c677_0a968a080654["CleanableDirectBufferImpl"]
  04dd755a_bbac_35e6_9950_f61de6d82a81["CleanerJava24Linker.java"]
  6fa1ae34_46bc_90dc_c677_0a968a080654 -->|defined in| 04dd755a_bbac_35e6_9950_f61de6d82a81
  0ef8ae96_0679_0b3e_6dd3_5e3f708bc569["CleanableDirectBufferImpl()"]
  6fa1ae34_46bc_90dc_c677_0a968a080654 -->|method| 0ef8ae96_0679_0b3e_6dd3_5e3f708bc569
  2e2a00e9_a304_e17d_584d_75d330164088["ByteBuffer()"]
  6fa1ae34_46bc_90dc_c677_0a968a080654 -->|method| 2e2a00e9_a304_e17d_584d_75d330164088
  68d923fc_7668_ba5f_c41e_604d127478a1["clean()"]
  6fa1ae34_46bc_90dc_c677_0a968a080654 -->|method| 68d923fc_7668_ba5f_c41e_604d127478a1
  d09f93b4_454a_2259_93ad_8e8003bc5742["hasMemoryAddress()"]
  6fa1ae34_46bc_90dc_c677_0a968a080654 -->|method| d09f93b4_454a_2259_93ad_8e8003bc5742
  0f9744a7_6f85_21e9_0835_d79bd8753d18["memoryAddress()"]
  6fa1ae34_46bc_90dc_c677_0a968a080654 -->|method| 0f9744a7_6f85_21e9_0835_d79bd8753d18

Relationship Graph

Source Code

common/src/main/java/io/netty/util/internal/CleanerJava24Linker.java lines 229–268

    private static final class CleanableDirectBufferImpl implements CleanableDirectBuffer {
        private final ByteBuffer buffer;
        private final long memoryAddress;

        private CleanableDirectBufferImpl(int capacity) {
            long addr = malloc(capacity);
            try {
                memoryAddress = addr;
                buffer = (ByteBuffer) INVOKE_CREATE_BYTEBUFFER.invokeExact(addr, (long) capacity);
            } catch (Throwable throwable) {
                Error error = new Error(throwable);
                try {
                    free(addr);
                } catch (Throwable e) {
                    error.addSuppressed(e);
                }
                throw error;
            }
        }

        @Override
        public ByteBuffer buffer() {
            return buffer;
        }

        @Override
        public void clean() {
            free(memoryAddress);
        }

        @Override
        public boolean hasMemoryAddress() {
            return true;
        }

        @Override
        public long memoryAddress() {
            return memoryAddress;
        }
    }

Frequently Asked Questions

What is the CleanableDirectBufferImpl class?
CleanableDirectBufferImpl is a class in the netty codebase, defined in common/src/main/java/io/netty/util/internal/CleanerJava24Linker.java.
Where is CleanableDirectBufferImpl defined?
CleanableDirectBufferImpl is defined in common/src/main/java/io/netty/util/internal/CleanerJava24Linker.java at line 229.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free