Home / Function/ record0() — netty Function Reference

record0() — netty Function Reference

Architecture documentation for the record0() function in ResourceLeakDetector.java from the netty codebase.

Function java CommonUtil Concurrent calls 1 called by 1

Entity Profile

Dependency Diagram

graph TD
  8f406d36_7022_4ea4_114b_0a77991c8aff["record0()"]
  0693d07b_5a78_e1d2_0694_de182ea7e0a6["DefaultResourceLeak"]
  8f406d36_7022_4ea4_114b_0a77991c8aff -->|defined in| 0693d07b_5a78_e1d2_0694_de182ea7e0a6
  2b39451e_97cf_55c0_71d4_1406fc75aa6c["record()"]
  2b39451e_97cf_55c0_71d4_1406fc75aa6c -->|calls| 8f406d36_7022_4ea4_114b_0a77991c8aff
  04fbb310_2310_c4f9_f7f0_2c4a7cdf67fb["TraceRecord()"]
  8f406d36_7022_4ea4_114b_0a77991c8aff -->|calls| 04fbb310_2310_c4f9_f7f0_2c4a7cdf67fb
  style 8f406d36_7022_4ea4_114b_0a77991c8aff fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

common/src/main/java/io/netty/util/ResourceLeakDetector.java lines 478–507

        private void record0(Object hint) {
            // Check TARGET_RECORDS > 0 here to avoid similar check before remove from and add to lastRecords
            if (TARGET_RECORDS > 0) {
                TraceRecord oldHead;
                TraceRecord prevHead;
                TraceRecord newHead;
                boolean dropped;
                do {
                    if ((prevHead = oldHead = headUpdater.get(this)) == null ||
                            oldHead.pos == TraceRecord.CLOSE_MARK_POS) {
                        // already closed.
                        return;
                    }
                    final int numElements = oldHead.pos + 1;
                    if (numElements >= TARGET_RECORDS) {
                        final int backOffFactor = Math.min(numElements - TARGET_RECORDS, 30);
                        dropped = ThreadLocalRandom.current().nextInt(1 << backOffFactor) != 0;
                        if (dropped) {
                            prevHead = oldHead.next;
                        }
                    } else {
                        dropped = false;
                    }
                    newHead = hint != null ? new TraceRecord(prevHead, hint) : new TraceRecord(prevHead);
                } while (!headUpdater.compareAndSet(this, oldHead, newHead));
                if (dropped) {
                    droppedRecordsUpdater.incrementAndGet(this);
                }
            }
        }

Domain

Subdomains

Called By

Frequently Asked Questions

What does record0() do?
record0() is a function in the netty codebase, defined in common/src/main/java/io/netty/util/ResourceLeakDetector.java.
Where is record0() defined?
record0() is defined in common/src/main/java/io/netty/util/ResourceLeakDetector.java at line 478.
What does record0() call?
record0() calls 1 function(s): TraceRecord.
What calls record0()?
record0() is called by 1 function(s): record.

Analyze Your Own Codebase

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

Try Supermodel Free