我有一个如下定义的类
final public class Results {
THashSet<String> filteredHashtags;
约束:我知道将变量声明为静态或非静态是一个设计问题,并且不应该由内存使用来控制,但是HashSet filteredHashtags会占用大量内存(&gt; 1Gb)所以我可以用较低的内存使用量来降低可读性。
选项
非静态:截至目前,由于以下原因,我将其保持为非静态:我创建了一个类实例,使用构造函数为filteredHashtags赋值。由于我只创建了一个类的实例,因此它在类所使用的内存方面并不重要。当不再引用该对象时,变量使用的内存将被释放。
静态:就代码的可读性而言,我宁愿保持静态,因为它更好地与代表的物理量相关。但是在这种情况下,我需要使用函数为静态变量赋值,让我们说setValues(...)。
问题:
答案 0 :(得分:2)
Rishi,你假设在静态情况下,与变量相关的内存永远不会被释放,直到程序终止为止。是不正确的。 Static属于类,类由加载器加载。因此,可以回收静态变量使用的内存。