RecyclerTest Class — netty Architecture
Architecture documentation for the RecyclerTest class in RecyclerTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 46ac14b1_2382_5afa_98f3_803182070b38["RecyclerTest"] e26a8224_f28b_3712_a787_658e2baa158b["RecyclerTest.java"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|defined in| e26a8224_f28b_3712_a787_658e2baa158b ebe18506_2430_b99d_d9f5_58c149e22f3f["ownerTypeAndUnguarded()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| ebe18506_2430_b99d_d9f5_58c149e22f3f 9f5e7837_25d6_af3e_9a24_23db631915cd["notNoneOwnerAndUnguarded()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 9f5e7837_25d6_af3e_9a24_23db631915cd 87dca999_f804_a974_e326_fd8f527f1246["newRecycler()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 87dca999_f804_a974_e326_fd8f527f1246 1c2c7a05_5ecb_99ce_ba33_27c123c22ebe["Thread()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 1c2c7a05_5ecb_99ce_ba33_27c123c22ebe 7e725c35_0fe0_4456_3792_5bd564cc5c6c["testThreadCanBeCollectedEvenIfHandledObjectIsReferenced()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 7e725c35_0fe0_4456_3792_5bd564cc5c6c 0cbd6e51_d6f1_ca47_98c3_5056deb2c541["verySmallRecycer()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 0cbd6e51_d6f1_ca47_98c3_5056deb2c541 1ad6ca0d_23ae_2354_dd38_0f17e894c21c["testMultipleRecycle()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 1ad6ca0d_23ae_2354_dd38_0f17e894c21c 0f15da7a_0cc5_d986_0be6_419438d2b63c["testUnguardedMultipleRecycle()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 0f15da7a_0cc5_d986_0be6_419438d2b63c 70ad432e_c700_e50e_aafa_660bf5f58122["testMultipleRecycleAtDifferentThread()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 70ad432e_c700_e50e_aafa_660bf5f58122 d5663849_f9de_1a49_00a8_bc360fe5bd24["testMultipleRecycleAtDifferentThreadRacing()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| d5663849_f9de_1a49_00a8_bc360fe5bd24 4c48b5d2_b8b5_b740_21d9_b4564924f5a5["testMultipleRecycleRacing()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 4c48b5d2_b8b5_b740_21d9_b4564924f5a5 22b5838f_ef41_7f0e_e808_78969bb0f5f2["testRecycle()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 22b5838f_ef41_7f0e_e808_78969bb0f5f2 2e4cb8b6_fbe8_043b_a4d2_d8f7f4a943b5["testRecycleDisable()"] 46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 2e4cb8b6_fbe8_043b_a4d2_d8f7f4a943b5
Relationship Graph
Source Code
common/src/test/java/io/netty/util/RecyclerTest.java lines 50–615
public class RecyclerTest {
public enum OwnerType {
NONE,
PINNED,
FAST_THREAD_LOCAL,
}
public static Stream<Arguments> ownerTypeAndUnguarded() {
return Arrays.stream(OwnerType.values())
.flatMap(owner -> Stream.of(true, false)
.map(unguarded -> Arguments.of(owner, unguarded)));
}
public static Stream<Arguments> notNoneOwnerAndUnguarded() {
return ownerTypeAndUnguarded().filter(args -> args.get()[0] != OwnerType.NONE);
}
protected static Recycler<HandledObject> newRecycler(OwnerType ownerType, boolean unguarded,
int maxCapacityPerThread) {
return newRecycler(ownerType, unguarded, maxCapacityPerThread, null);
}
protected static Recycler<HandledObject> newRecycler(OwnerType ownerType, boolean unguarded,
int maxCapacityPerThread,
Consumer<HandledObject> onNewObject) {
switch (ownerType) {
case NONE:
return new Recycler<HandledObject>(maxCapacityPerThread, unguarded) {
@Override
protected HandledObject newObject(Handle<HandledObject> handle) {
HandledObject newObj = new HandledObject(handle);
if (onNewObject != null) {
onNewObject.accept(newObj);
}
return newObj;
}
};
case PINNED:
return new Recycler<HandledObject>(maxCapacityPerThread >> 1, maxCapacityPerThread, Thread.currentThread(),
unguarded) {
@Override
protected HandledObject newObject(
Recycler.Handle<HandledObject> handle) {
HandledObject newObj = new HandledObject(handle);
if (onNewObject != null) {
onNewObject.accept(newObj);
}
return newObj;
}
};
case FAST_THREAD_LOCAL:
return new Recycler<HandledObject>(maxCapacityPerThread >> 1, maxCapacityPerThread, unguarded) {
@Override
protected HandledObject newObject(Handle<HandledObject> handle) {
HandledObject newObj = new HandledObject(handle);
if (onNewObject != null) {
onNewObject.accept(newObj);
}
return newObj;
}
};
default:
throw new Error();
}
}
protected static Recycler<HandledObject> newRecycler(boolean unguarded, int maxCapacityPerThread) {
return new Recycler<HandledObject>(maxCapacityPerThread >> 1, maxCapacityPerThread, unguarded) {
@Override
protected HandledObject newObject(
Recycler.Handle<HandledObject> handle) {
return new HandledObject(handle);
}
};
}
protected static Recycler<HandledObject> newRecycler(int maxCapacityPerThread) {
return newRecycler(OwnerType.FAST_THREAD_LOCAL, false, maxCapacityPerThread, 8, maxCapacityPerThread >> 1);
}
Source
Frequently Asked Questions
What is the RecyclerTest class?
RecyclerTest is a class in the netty codebase, defined in common/src/test/java/io/netty/util/RecyclerTest.java.
Where is RecyclerTest defined?
RecyclerTest is defined in common/src/test/java/io/netty/util/RecyclerTest.java at line 50.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free