allocateRun() — netty Function Reference
Architecture documentation for the allocateRun() function in PoolChunk.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD ff51bcad_2a8e_9ef1_b286_8e676953d24e["allocateRun()"] 271be16e_fb25_9fe6_0749_cf5dd80dd903["PoolChunk"] ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|defined in| 271be16e_fb25_9fe6_0749_cf5dd80dd903 dc4b66ae_8f51_844d_74c5_b56fbafe898a["allocate()"] dc4b66ae_8f51_844d_74c5_b56fbafe898a -->|calls| ff51bcad_2a8e_9ef1_b286_8e676953d24e de510c10_913b_9792_3aa7_159e623d5dd8["allocateSubpage()"] de510c10_913b_9792_3aa7_159e623d5dd8 -->|calls| ff51bcad_2a8e_9ef1_b286_8e676953d24e 96d34a61_1614_0158_28ca_09dcdd88e7ba["runFirstBestFit()"] ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| 96d34a61_1614_0158_28ca_09dcdd88e7ba 0c316f41_e99f_1ec2_114e_8ddf13319b33["isUsed()"] ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| 0c316f41_e99f_1ec2_114e_8ddf13319b33 8ccbb357_1d7a_1dbd_9f91_87a4fb202fea["removeAvailRun0()"] ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| 8ccbb357_1d7a_1dbd_9f91_87a4fb202fea e0491618_1a24_463c_753f_6914e389ffd3["splitLargeRun()"] ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| e0491618_1a24_463c_753f_6914e389ffd3 1bdfe3f7_3884_814f_0eb6_924b6a843c79["runSize()"] ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| 1bdfe3f7_3884_814f_0eb6_924b6a843c79 style ff51bcad_2a8e_9ef1_b286_8e676953d24e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
buffer/src/main/java/io/netty/buffer/PoolChunk.java lines 370–399
private long allocateRun(int runSize) {
int pages = runSize >> pageShifts;
int pageIdx = arena.sizeClass.pages2pageIdx(pages);
runsAvailLock.lock();
try {
//find first queue which has at least one big enough run
int queueIdx = runFirstBestFit(pageIdx);
if (queueIdx == -1) {
return -1;
}
//get run with min offset in this queue
IntPriorityQueue queue = runsAvail[queueIdx];
long handle = queue.poll();
assert handle != IntPriorityQueue.NO_VALUE;
handle <<= BITMAP_IDX_BIT_LENGTH;
assert !isUsed(handle) : "invalid handle: " + handle;
removeAvailRun0(handle);
handle = splitLargeRun(handle, pages);
int pinnedSize = runSize(pageShifts, handle);
freeBytes -= pinnedSize;
return handle;
} finally {
runsAvailLock.unlock();
}
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does allocateRun() do?
allocateRun() is a function in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/PoolChunk.java.
Where is allocateRun() defined?
allocateRun() is defined in buffer/src/main/java/io/netty/buffer/PoolChunk.java at line 370.
What does allocateRun() call?
allocateRun() calls 5 function(s): isUsed, removeAvailRun0, runFirstBestFit, runSize, splitLargeRun.
What calls allocateRun()?
allocateRun() is called by 2 function(s): allocate, allocateSubpage.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free