java - 节省实例变量

标签 java memory memory-management

我们的服务器最近出现了很多故障,我的任务是改善一组被确定为罪魁祸首的类的内存使用情况。

我有初始化对象实例的代码,如下所示:

boolean 值 var1; boolean 值 var2; 。 。 。 boolean 值 var100;

void setup() {
 var1 = map.hasFlag("var1");
 var2 = map.hasFlag("var2);
 .
 .
 .
 if (map.hasFlag("some flag") {
     doSomething();
 }
 if (var1) {
   increment something
 }
 if (var2) {
   increment something
 }

}

设置代码大约需要 1300 行。我的问题是,在使用太多实例变量方面,此方法是否可能更有效。

顺便说一句,实例变量在“主”方法handleRow()中使用,例如:

handleRow(){
   if (var1) {
     doSomething();
   }
   .
   .
   . 
   if (var100) {
     doSomething();
    }
}

我正在考虑的一个解决方案是通过删除设置方法中的实例变量来更改实现,并在需要时直接从 map 中调用它:

handleRow(){
  if (map.hasFlag("var1") {
      doSomething();
  }
  .
  .
  . 
  if (map.hasFlag("var100") {
     doSomething();
  }
}

这是我正在考虑的一个解决方案,但我想听听社区的意见。 :)

最佳答案

如果这些确实都是 boolean 变量,请考虑使用 BitSet反而。您可能会发现,这会将内存占用量减少 8 倍,甚至可能减少 32 倍,具体取决于填充。

关于java - 节省实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3500288/

相关文章:

c# - 防止在渲染之前复制 C# WPF BitmapSource 字节

c - 关于动态分配字符串的一个小问题,我该如何解决?

c - 为字符串分配内存的节省时间和内存的方法

Java HTMLUnit MalformedURLException

java - 正则表达式匹配除特定模式之外的任何内容

Android Gallery 由于内存使用而崩溃

python - Redis 使用的 RAM 不足

c++ - 析构函数和指向类属性的指针

java - 如何使用 ArrayList 值执行算术运算

java - JRuby 类和 Java 脚本引擎意外结果