大梦想家

5年开发工程师,2年实施经理,X年售前顾问,......
数据加载中……
寻求从事过Java桌面的应用的朋友解惑~
       最近在公司从事一个通用的数据查询平台的开发,是一个基于Eclipse-RCP的应用,项目现在基本进入改进和修正BUG阶段。
    但是现在碰到了令人头疼的问题,程序在测试人员的机器上跑上半个多小时,整个应用程序的内存会占到300m以上,如果是做频繁的大数据查询,内存涨的更快。
    我加了每分钟调用一次System.gc()的线程,唯一的改观是在Eclipse下面的内存进度显示上,会出现小范围的减少,但是从任务管理器中检视应用程序的内存,还是居高不下~
       Java本身吃内存,我能理解,Eclipse-RCP也会加载大量的东西,我也能理解,大数据量的加载更可怕,我更能理解,但是无论怎么调用System.gc()都没有什么反应,我就不能理解了~
      希望做过这方面的研究或者应用的朋友帮忙解答,或者谈谈经验~也可以帮助我做一些改善~

客户虐我千百遍,我待客户如初恋!

posted on 2007-10-21 11:24 阿南 阅读(1146) 评论(9)  编辑  收藏 所属分类: Eclipse-RCP

评论

# re: 寻求从事过Java桌面的应用的朋友解惑~ 2007-10-21 12:00 zhrb

System.gc()只是告诉GC,要收集垃圾了,但是GC并不一定会按照其要求执行垃圾收集的。事实上GC线程是一个优先级别低的线程,如果你的CPU总是处于繁忙状态的话GC未必能运行。
缓慢的话,可能有两个原因:
1.程序写得不好,造成内存泄露。(没错,Java程序如果写得不好也会造成内存泄露的)
2.程序的架构可能有问题,可以采用一些缓存之类的技术。

我也没有实际经验,你可以去newsmth.org的Java版上去咨询一下,那边高手多。最好详细贴出你的问题,采用什么结构、技术、硬件资源、症状是什么。
  回复  更多评论    

# re: 寻求从事过Java桌面的应用的朋友解惑~ 2007-10-21 12:10 千里冰封

应该是你代码的问题 ,很多对象都有引用指向它,你gc多少次也是没有用的。
  回复  更多评论    

# re: 寻求从事过Java桌面的应用的朋友解惑~ 2007-10-21 12:33 javazhai

swt的图片,字体等重型组件都是要特殊处理的,不然你的内在肯定是会涨暴的,调用gc是没有用的。。。
  回复  更多评论    

# re: 寻求从事过Java桌面的应用的朋友解惑~ 2007-10-21 12:56 BeanSoft

是的 这也是 SWT 本身设计的一个弊病 自己释放吧 所有资源都要释放... 好像 JFace 有 ResourceManager 类.
  回复  更多评论    

# re: 寻求从事过Java桌面的应用的朋友解惑~ 2007-10-21 13:08 BeanSoft

对了, 呵呵, 这时候你就得用 JProfiler 这样的工具来分析了, 可以看我做过的视频:
用 JProfiler4 调优 Weblogic 和 Tomcat 的视频(原创)
http://www.blogjava.net/beansoft/archive/2006/11/27/83767.html
如果对象是 SWT 的多, 那你得考虑改进 SWT 的资源管理; 否则就是别处的代码的 bug 了.
  回复  更多评论    

# re: 寻求从事过Java桌面的应用的朋友解惑~ 2007-10-21 13:10 plankton13

估计你的代码问题,强制调用GC() ,会占用所有的线程资源, 效率不是很高。

建议还是先看看代码,然后确定问题。

  回复  更多评论    

# re: 寻求从事过Java桌面的应用的朋友解惑~ 2007-10-21 16:22 mingj

@javazhai
同意
嗯,我以前也看过这样的文章
字体占了太多的资源
  回复  更多评论    

# re: 寻求从事过Java桌面的应用的朋友解惑~[未登录] 2007-10-22 09:45 wzjin

试用swing看看,有时候采用非java代码内存回收很困难的。另外,你从数据库中读出的数据在不用的时候尽量要及时赋值为null,不要等它生命周期完,这块其实是最占用内存的,你项目估计也是这问题。估计你修改以后再用JProfiler分析对比,很容易发现这点。
  回复  更多评论    

# re: 寻求从事过Java桌面的应用的朋友解惑~ 2007-10-23 08:49 wing5jface

同意字体,绘图没有释放这一观点.
曾经的项目中的收银模块上线运行一年多没有碰过这样的问题.
最近有2个RCP程序在VIA 800(低于赛扬666),256M环境装了VNC等软件在内18小时运行都顺畅的.
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: