| 程序包 | 说明 |
|---|---|
| org.beetl.core.impl | |
| org.beetl.core.runtime |
| 限定符和类型 | 类和说明 |
|---|---|
class |
DefaultBeetlMemoryManager
通过维护 Collection 的引用,来避免重复创建 Collection 的实例
当 Collection 的容量较大时,MemoryManager的优势开始凸显,减少了 Collection 扩容的开销
// 以下例子演示了如何通过 DefaultBeetlMemoryManager 使代码性能提升了 45% (1058ms → 578ms)
public void testRecoveryList() {
String tag = "recoveryList#";
int id = 1;
// performance: 当 Collection 的容量较大时,MemoryManager的优势开始凸显,减少了 Collection 扩容的开销
final int size = 20;
for (int i = 0; i < size; i++) {
List list = new ArrayList();
opList(list); // List 的数据操作
BeetlRuntime.getMemoryManager().recoveryList(list); // 回收引用
}
long time1 = System.nanoTime();
for (int i = 0; i < size; i++) { // 耗时: 578ms
List list = BeetlRuntime.getMemoryManager().takeList(); // 获取引用,没有则创建
opList(list); // List 的数据操作
}
long time2 = System.nanoTime();
for (int i = 0; i < size; i++) { // 耗时: 1058ms
List list = new ArrayList(); // 常规场景创建 List 的实例
opList(list); // List 的数据操作
}
long time3 = System.nanoTime();
System.out.println(tag + id++ + " 耗时: " + (time2 - time1) / 1_000_000 + "ms");
System.out.println(tag + id++ + " 耗时: " + (time3 - time2) / 1_000_000 + "ms");
System.out.println(BeetlRuntime.getMemoryManager());
}
// 一个模拟 list 操作的方法
private static void opList(List list) {
for (int i = 0; i < 1000_000; i++) {
list.add(i);
}
}
|
| 限定符和类型 | 方法和说明 |
|---|---|
static IBeetlMemoryManager |
DefaultBeetlMemoryManager.get()
获取 DefaultBeetlMemoryManager 实例
|
| 限定符和类型 | 方法和说明 |
|---|---|
static IBeetlMemoryManager |
BeetlRuntime.getMemoryManager()
获取Beetl的运行时内存管理器
|
Copyright © 2022. All rights reserved.