我写了一个java服务器,它需要太多的内存来优化它。我分析程序,它只扫描一些数据,然后解析它并将其写入文件。它需要大约2GB的RES,但我可以测量真实数据,它应该是300MB。所以我使用JProfiler来优化程序。我发现它可以释放大约0.6GB的内存。起初我建议也许arraylist应该使用ensureCapacity并且是一个类成员以避免过多的新操作。我使用以下代码进行测试,令人惊讶的是它也一直释放大约40MB 。那么如果想最大限度地减少内存使用量,我该怎么办?
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> t = new ArrayList<Integer>(100);
while (true) {
// System.out.println(t.size());
for (int i = 0; i < 100; ++i) {
t.add(i);
}
// System.out.println(t.size());
t.clear();
// System.out.println(t.size());
}
}
}