gpt4 book ai didi

java - 对于一小段代码来说,延迟初始化值得吗?

转载 作者:行者123 更新时间:2023-11-30 04:05:21 25 4
gpt4 key购买 nike

我有单例A.classRunnable loadTask 可能会被唤起,也可能不会,这就是我考虑延迟初始化的原因。我担心内存使用情况。所以问题是延迟初始化是否值得实现?或者函数体消耗的内存比即时初始化的内存多一点,并且更容易忽略内存消耗差异。

我知道函数的定义必须在某处消耗内存

附注据我所知,函数体的内存不是在堆中分配的。

附注Instrumentation.class、sizeOf、Runtime.freeMemory() 仅适用于类字段/属性。

class A_LazyInit {
Runnable loadTask;
void load() {
if(loadTask == null) loadTask = new Runnable() {
public void run() {
loadFileFromInternet();
}
};
new Thread(loadTask).start();
}
void useMethod() {
if(isGoodCondition()) load();
}
}

对比

class A {
Runnable loadTask = new Runnable() {
public void run() {
loadFileFromInternet();
}
};
void useMethod() {
if(isGoodCondition()) new Thread(loadTask).start();
}
}

最佳答案

这里您不会通过延迟初始化来节省任何内存。无论您是否急切地初始化代码,代码的内存都会被保留(它是在类加载时分配的)。

由于初始化 loadTask 变量不会花费很长时间,因此在任何情况下使用延迟初始化都不会给您带来优势。

关于java - 对于一小段代码来说,延迟初始化值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com