-
Swing怎么释放内存10
大家好,我的程序这样一个情况:
顶级容器用的是JInternalFrame,然后在这个容器里面两三个JPanel容器,里面一个JPanel里面将近有3000多个JTextArea,3000多个JScrollPane,还有3000多个JCheckBox。这些子控件首先用一个线程生成,然后再用一个线程添加到容器里面的。这过程中用ArrayList保存所有的控件。整个生成添加过程结束以后javaw的内存使用大概在200MB作于,这个JInternalFrame的defaultCloseOperation我设置的是DISPOSE_ON_CLOSE,当我关闭这个内部窗口的时候内存还是没有释放,我以为那些生成的对象还没有被销毁,但是怎么想也解决不了,后来突然发现,我把主窗口最小化然后最大化以后,内存全部被释放了,内存使用跟程序刚刚启动的时候一样。
我的问题是能找个办法不去最小化最大化就能释放内存的方法。
谢谢。
小提示:Java我是自学的,也没有上过什么学校,才高二的文化水平。所以大家不要骂我什么地方不合理,呵呵!!!
问题补充:
调用主窗口的rePaint()方法也没用啊。郁闷ing....
问题补充:
JInternalFrame是添加到JDesktopPane里的,而且好像只能把JDesktopPane作为他的父窗口,我调用了JDesktopPane的repaint()方法也没有用。
郁闷死了,如果关闭JInternalFrame的时候不能释放内存的话,几次打开关闭就出 out of memory 的错误,程序直接死掉。。。
问题补充:
我就想不通,既然关闭了这个JInternalFrame的窗口,而且关闭事件是 DISPOSE_ON_CLOSE,这个意思应该是关闭这个窗口的时候销毁这个窗口对象,窗口对象被销毁了,那么作为他的成员变量的几个ArrayList以及保存在里面的JTextArea, JSCrollPane,JCheckBox 等几千个对象一同被销毁,内存被释放掉才对啊。。。但实际上并不是这样的结果。我所以郁闷啊。。。2009年6月04日 18:13
4个答案 按时间排序 按投票排序
-
>>几次打开关闭就出 out of memory 的错误
出现这种情况了吗? 你可以试一下。如果出现这种情况,可能是你的程序问题。有些东西可能想像不一定是正确的。Windows 会定期处理内存回收的问题。如果内存没有被占用到一定比例,它是不会回收的。你可以观察一下,刚开始的时候是一直往上涨,但是涨到一定数值,就会一下子回落。就和你最小化的效果差不多。具体window是怎么个机制,我没有研究过。但是我以前也有你同样的担心。但是后来发现我的担心是多余的。2009年6月05日 18:18
-
窗口最小化,然后最大化的这个过程,其实就是窗口重绘的过程,我印象中JInternalFrame是加在JPanel上的?你再试试看调用JInternalFrame所在容器的repaint()
2009年6月05日 11:24
相关推荐
标题中的“Sun 用 Swing 写的内存监控小工具”指的是一个使用Java Swing库开发的内存管理工具。Swing是Java的一个图形用户界面(GUI)工具包,它提供了丰富的组件和功能,使得开发者能够构建功能强大的桌面应用。在这...
通过监控CPU使用率、内存消耗等指标,可以及时发现性能瓶颈,并采取措施优化代码。 综上所述,通过正确理解和运用Swing的事件处理机制、合理利用多线程技术和不断优化数据处理逻辑,可以显著提升Swing应用程序的...
对于开发者来说,这样的精简版JRE有助于减少资源消耗,特别是对于内存和处理器有限的设备,它能够提供更高效的性能。 在Java 1.6版本中,Swing引入了一些关键特性,例如轻量级组件(Lightweight Components),它们...
5. **性能分析**:Swing Explorer还提供了性能分析功能,可以帮助开发者识别可能的性能瓶颈,例如绘制速度慢或者内存占用高等问题。 二、Swing Explorer的工作原理 Swing Explorer通过JMX(Java Management ...
然而,当数据量过大时,一次性加载所有数据不仅会消耗大量的内存资源,还会影响用户的操作体验。因此,实现`JTable`的分页功能就显得尤为重要。 #### 二、分页基础知识 分页是前端和后端交互过程中常用的一种技术...
例如,我们可以使用BufferedReader和BufferedWriter类来高效地读取和写入大文件,同时避免内存溢出。 数据库操作则通常涉及到JDBC(Java Database Connectivity),这是Java连接数据库的标准API。在Swing应用中,...
这个计数可以存储在内存、文件或数据库中,具体取决于项目的复杂性和需求。 Swing组件的布局管理也是重要的一环。Swing提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout等,用于自动排列组件。开发者...
8. **优化代码**:描述中提到“优化了网上的下拉框代码”,可能是指解决了性能问题、内存泄漏或者提升了用户体验。优化可能包括减少不必要的计算、复用对象、使用更高效的数据结构等。 通过以上知识点的应用,你...
10. **最佳实践**:提供关于性能优化、内存管理和线程安全的建议,帮助开发者创建高效且稳定的Swing应用。 这个压缩包中的"ExamServer"可能是一个示例项目或者服务器端的代码,它可能展示了如何将Swing界面与后端...
7. **关闭资源**: 在完成数据库操作后,应确保关闭`ResultSet`、`Statement`和`Connection`,以释放数据库资源,防止内存泄漏。 在Swing应用中,这些数据库操作通常在事件处理器中执行,比如按钮点击事件。界面设计...
7. **资源释放**:在视频录制结束后,必须正确关闭和释放所有使用的资源,如摄像头设备、文件流等,以防止内存泄漏和系统资源浪费。 8. **性能优化**:对于高分辨率或高帧率的视频,处理速度和内存使用都是需要考虑...
这可能涉及到算法优化、内存管理以及用户界面的调整。 总的来说,使用Java Swing开发"植物大战僵尸"游戏是一个集成了面向对象编程、图形用户界面设计、事件处理和动画制作等多个技术领域的实践。它不仅可以提升...
Java的强类型和垃圾回收机制使得代码更安全,同时降低了内存管理的复杂性。在本项目中,Java不仅用于编写Swing界面,还负责处理业务逻辑和数据库操作。 【项目实践】 “梁凯的毕业设计”这个压缩包文件名称暗示了...
Swing组件基于Java的AWT(Abstract Window Toolkit),但比AWT更先进,因为它使用轻量级组件模型,这意味着大部分UI元素在内存中用Java对象表示,而不是依赖于操作系统提供的底层图形支持。这使得Swing应用能在不同...
9. **资源管理**:考虑到内存使用,图片加载后可能需要进行适当的内存管理,防止内存泄露。 10. **用户交互**:简单的图片查看器可能包含上一张/下一张按钮,前进和后退可以通过键盘的左右箭头实现。这些功能都需要...
这样可以减少内存占用,提高程序响应速度。 2. **Swing组件**:在Swing中,JToolBar可以用来创建工具栏,它包含一系列按钮和其他控件,非常适合构建分页工具栏。此外,JLabel可以用于显示当前页数、总页数等信息。 ...
这有助于减少程序的大小,加快启动速度,同时降低了内存占用,尤其对于资源有限的设备来说,这是一个非常有益的优化。 精简的过程通常包括以下几个步骤: 1. **分析rt.jar**:识别出与Swing相关的类和包,保留这些...
例如,书中可能涵盖了使用JProfiler或VisualVM等工具来分析Swing应用的内存占用和性能瓶颈。此外,可能还会讲解如何使用Eclipse、IntelliJ IDEA等集成开发环境(IDE)中的Swing支持,以提高开发效率。 在《Java ...