[求助:] 报错:java.lang.OutOfMemoryError!!

llwangyu 2006-07-07 08:26:17
右键选择jtable的一行,弹出一个jdialog显示详细内容。
刚开始都正常,可是当我选择弹出7、8次就很慢,有时候等半天出现java.lang.OutOfMemoryError!不是说java是自动回收内存的么,我关掉jdialog不是就行了么,为什么会有时候慢,有时候快!求助各位高手!
...全文
227 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序獵人 2006-07-07
  • 打赏
  • 举报
回复
人家讲得好,你也不多给点儿分。呵呵……
llwangyu 2006-07-07
  • 打赏
  • 举报
回复
感谢楼上三位,尤其是舌头讲的最好,原因是http://community.csdn.net/Expert/topic/4865/4865950.xml?temp=.6374475,请继续关注!
结贴,给分
程序獵人 2006-07-07
  • 打赏
  • 举报
回复
会不会是你的dialog每次都是new出来的,然后不要了之后只是setVisible(false),或者hide(),并没有真正释放dialog的资源?这样内存自然会很快被用光的。

改作重用dialog,new一次出来之后,以后还用这一个,只不过把需要显示的值换一下就好。
或者每次用完了释放掉(下策,因为效率低下)。不过释放掉的方法记不太清楚了,好像是dispose()?自己查查吧。
ll42002 2006-07-07
  • 打赏
  • 举报
回复
首先,设置null和close操作是不同的,如果执行了close操作,那么是否设置null无关紧要
其次,java中有些资源是必须执行close操作的,例如数据库连接,ResultSet,io等等,否则就会出现outofMemory.
最后,造成outofmemeory的情况不止是内存泄漏,还有当你读一个大的对象进入内存时,但是它的大小超过了操作系统分配给jvm的最大内存,那么也会出现outofMemory.
你这种情况典型的就是内存泄漏,查查应用程序是否对有些资源没有执行close操作。
llwangyu 2006-07-07
  • 打赏
  • 举报
回复
我描述不清楚,就是自己写了一个jLabelComboBox类,继承自jPanel,内容是jLabel+jComboBox,怎么做才能实现jLabelComboBox像其他类那样能addXXListener,监听的对象就是jComboBox,大家帮忙了!
llwangyu 2006-07-07
  • 打赏
  • 举报
回复
找到问题了:我把jlabel和jcombox封装成了一个jlabelcombox类,把jlabel和jtextfield封装成了一个jlabeltextfield类,怎么在jlabelcombox和jlabeltextfield中监听combox和textfield的mouseclick和keypress?小弟水平很底,描述都不出来,希望大家能帮忙!
llwangyu 2006-07-07
  • 打赏
  • 举报
回复
楼上的说得好像是正确的,可是我null了几个变量,好像效果不明显,有没有什么好的方法。
顺便问个一下,是不是代码中少定义一些变量,用的时候尽量用一个变量来实例化好,要是这样我以后就要注意了!
kevinliuu 2006-07-07
  • 打赏
  • 举报
回复
java的垃圾回收是个低优先级的进程,并不能实时的进行回收

看看你的程序,对于大数据量的存取,使用完毕最好显式的释放一下,比如close或null

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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