StringBuffer 内存释放问题

wqlearner 2011-04-01 11:03:22
最近项目当中出现一个问题,内存一直居高不下!初步怀疑是StringBuffer没有释放的问题。专门为StringBuffer做了个小测试。代码如下:
public class TestBuffer extends JFrame {
static JLabel lblmb;

public TestBuffer() {
getContentPane().setLayout(null);

JButton button = new JButton("开 始");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
append();
}
});
button.setBounds(139, 35, 95, 25);
getContentPane().add(button);

lblmb = new JLabel("内存:0MB");
lblmb.setBounds(58, 116, 236, 15);
getContentPane().add(lblmb);

JButton btnGc = new JButton("GC");
btnGc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.err.println("手动GC.");
System.gc();
System.err.println("手动GC完毕.");
}
});
btnGc.setBounds(139, 81, 95, 25);
getContentPane().add(btnGc);
new Thread(new Runnable() {

@Override
public void run() {
while (true) {
TestBuffer.this.lblmb.setText("内存:" + getUsedMemoryMB()
+ " MB");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
TestBuffer test = new TestBuffer();
test.setVisible(true);
test.setBounds(0, 0, 300, 200);
}

private static void append() {
StringBuffer sb = new StringBuffer();
System.err.println("拼接开始!");
for (int i = 0; i < 100000; i++) {
sb.append("枯开发拉动副经理卡上地方建立卡的时间分厘卡世界的风口浪尖圣诞快乐附近啊圣诞快乐附近考虑到");
}
System.err.println("拼接结束!");
}

public static double getUsedMemoryMB() {
return (Runtime.getRuntime().totalMemory() - Runtime.getRuntime()
.freeMemory()) / 1024D / 1024D;
}

private static final long serialVersionUID = 1L;
}

这个测试代码不知道对不对!使用这个代码进行测试后发现当不进行手动GC时,内存一直没有下来。当手动GC后,内存释放!
请求高人!
谢谢!
分少再加!
...全文
828 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
__Ray__ 2012-07-20
  • 打赏
  • 举报
回复
怎么没人回复?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧