View Javadoc
1   /*
2    * Copyright 2021 The Netty Project
3    *
4    * The Netty Project licenses this file to you under the Apache License,
5    * version 2.0 (the "License"); you may not use this file except in compliance
6    * with the License. You may obtain a copy of the License at:
7    *
8    *   https://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations
14   * under the License.
15   */
16  package io.netty5.buffer.api.pool;
17  
18  import java.util.List;
19  
20  /**
21   * Expose metrics for an arena.
22   */
23  public interface PoolArenaMetric extends SizeClassesMetric {
24  
25      /**
26       * Returns the number of thread caches backed by this arena.
27       */
28      int numThreadCaches();
29  
30      /**
31       * Returns the number of small sub-pages for the arena.
32       */
33      int numSmallSubpages();
34  
35      /**
36       * Returns the number of chunk lists for the arena.
37       */
38      int numChunkLists();
39  
40      /**
41       * Returns an unmodifiable {@link List} which holds {@link PoolSubpageMetric}s for small sub-pages.
42       */
43      List<PoolSubpageMetric> smallSubpages();
44  
45      /**
46       * Returns an unmodifiable {@link List} which holds {@link PoolChunkListMetric}s.
47       */
48      List<PoolChunkListMetric> chunkLists();
49  
50      /**
51       * Return the number of allocations done via the arena. This includes all sizes.
52       */
53      long numAllocations();
54  
55      /**
56       * Return the number of small allocations done via the arena.
57       */
58      long numSmallAllocations();
59  
60      /**
61       * Return the number of normal allocations done via the arena.
62       */
63      long numNormalAllocations();
64  
65      /**
66       * Return the number of huge allocations done via the arena.
67       */
68      long numHugeAllocations();
69  
70      /**
71       * Return the number of deallocations done via the arena. This includes all sizes.
72       */
73      long numDeallocations();
74  
75      /**
76       * Return the number of small deallocations done via the arena.
77       */
78      long numSmallDeallocations();
79  
80      /**
81       * Return the number of normal deallocations done via the arena.
82       */
83      long numNormalDeallocations();
84  
85      /**
86       * Return the number of huge deallocations done via the arena.
87       */
88      long numHugeDeallocations();
89  
90      /**
91       * Return the number of currently active allocations.
92       */
93      long numActiveAllocations();
94  
95      /**
96       * Return the number of currently active small allocations.
97       */
98      long numActiveSmallAllocations();
99  
100     /**
101      * Return the number of currently active normal allocations.
102      */
103     long numActiveNormalAllocations();
104 
105     /**
106      * Return the number of currently active huge allocations.
107      */
108     long numActiveHugeAllocations();
109 
110     /**
111      * Return the number of active bytes that are currently allocated by the arena.
112      */
113     long numActiveBytes();
114 
115     /**
116      * Return the number of bytes that are currently pinned to buffer instances, by the arena.
117      */
118     long numPinnedBytes();
119 }