1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty5.buffer.api.unsafe;
17
18 import io.netty5.buffer.api.Buffer;
19 import io.netty5.buffer.api.Drop;
20 import io.netty5.buffer.api.internal.Statics;
21 import io.netty5.util.internal.PlatformDependent;
22
23 class FreeAddress implements Runnable, Drop<Buffer> {
24 private final long address;
25 private final int size;
26
27 FreeAddress(long address, int size) {
28 this.address = address;
29 this.size = size;
30 }
31
32 @Override
33 public void run() {
34 PlatformDependent.freeMemory(address);
35 Statics.MEM_USAGE_NATIVE.add(-size);
36 }
37
38 @Override
39 public void drop(Buffer obj) {
40 run();
41 }
42
43 @Override
44 public Drop<Buffer> fork() {
45 throw new IllegalStateException(this + " cannot fork. Must be guarded by an ArcDrop.");
46 }
47
48 @Override
49 public void attach(Buffer obj) {
50 }
51
52 @Override
53 public String toString() {
54 return String.format("FreeAddress(0x%x, %s bytes)", address, size);
55 }
56 }