gpt4 book ai didi

java - 在 Java 中创建其他对象的对象是否是糟糕的程序设计?

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

我有一个对象 (Object1) 的实例,其构造函数创建其他对象 (Object2) 的实例并将它们存储在 ArrayList 中。 Object2 有一个静态的 instancecount 变量(在其他静态变量中),Object2 的实例依赖于这个 instancecount。在一个测试程序中,我运行一个 for 循环,其中在每次迭代时创建一个 Object1 的实例,然后对 Object1 实例的引用重新分配一个空值。我的测试程序看起来像这样:

    for (...) {
Object1 obj = new Object1(...); //which creates several Object2's
obj.myMethod();
obj = null;
}

问题是 Object2 的实例在每次循环迭代结束时都没有得到垃圾回收,因此 Object2 的静态 instancecount 变量只会随着每次迭代而增长和增长(随着内存使用)。这是可以预料的吗?有没有办法强制清理 Object2 实例,以便每个循环都有一个新的开始?这是一个糟糕的程序设计吗?

谢谢!瑞安

最佳答案

垃圾收集工作非常可靠,因此它不会泄漏内存或无限增长。

但 GC 也仅在 JVM 认为需要时运行,因此您不能强制它在循环的每次迭代结束时运行。

拥有依赖于 GC 何时运行的代码是糟糕的代码。

此外,我不确定您是如何管理实例计数的。在构造函数中增加它很容易,但是什么时候再减少它呢?它当然不会自动发生。

关于java - 在 Java 中创建其他对象的对象是否是糟糕的程序设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337551/

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