保存实例变量

Jeu*_*une 0 java memory memory-management

我们的服务器最近一直在下降很多,我的任务是改善一组被认定为罪魁祸首的类的内存使用.

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

布尔var1; 布尔var2; ...布尔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
 }

}
Run Code Online (Sandbox Code Playgroud)

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

顺便说一下,实例变量用在"main"方法handleRow()中,例如:

handleRow(){
   if (var1) {
     doSomething();
   }
   .
   .
   . 
   if (var100) {
     doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想的一个解决方案是通过删除setup方法中的实例变量来更改实现,并在需要时直接从地图中调用它:

handleRow(){
  if (map.hasFlag("var1") {
      doSomething();
  }
  .
  .
  . 
  if (map.hasFlag("var100") {
     doSomething();
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 7

如果这些都是boolean变量,请考虑使用a BitSet.您可能会发现根据填充将内存占用减少8倍甚至32倍.