java - 测试 Swing 应用程序

标签 java hibernate swing memory-management jprofiler

我正在使用 Hibernate 开发基于 Java Swing 的应用程序。我使用 NetBeans IDE 构建了我的应用程序。

我有大约 13 个子模块。我使用 JInternalFrames 来构建这些子模块。以及 4 个使用 JasperViewer 的报告。

加载我的应用程序大约需要 2 - 3 分钟。当从一个模块切换到另一个模块时,加载每个模块需要很多时间。

现在我必须检查以下事项

  1. 如何检查我的整个 Swing 应用程序的内存和 CPU,以及哪个类占用了较多的 CPU 和内存?

  2. 如何使用简单的方法测试我的应用程序?

  3. 如何提高我的 swing 应用程序的性能?

最佳答案

像这样的启动时间不仅仅是因为有一个大的图形用户界面应用程序造成的。我认为问题是您的数据库访问。提出问题:

  • 您是否使用 hibernate 的延迟加载功能?这是一个不错的功能,但如果不负责任地使用,可能会导致一些问题。阅读this .
  • 您是在应用程序中缓存数据库中的数据,还是在每次操作时从数据库中获取数据?减少加载时间的一个好方法是将数据存储在 HashMap 中。 Hibernate 也有它自己的 caches .
  • 您是否获取了整个数据库的很大一部分?这是不希望的,更好的数据库模式设计可以防止这种情况,也可以延迟加载。
  • 您的应用程序是多线程的吗?从事件分派(dispatch)线程加载数据可以带来很大的好处。

您的问题:

  1. 每个 JDK 都附带最简单的工具:jVisualVM您可以存储 .hprof 文件并在其他工具中分析它们。内存分析器工具或 Netbeans profiler也是不错的选择。您还可以阅读 this了解更多信息。
  2. 这取决于您要测试的内容。只是类 ( JUnit )、GUI ( UISpec4J ),或者您的意思是分析而不是测试?
  3. 您可以通过缓存数据、使用延迟加载或如上所述使您的应用程序成为多线程来提高性能。您还可以阅读 here如何实现这一目标。

关于java - 测试 Swing 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11239606/

相关文章:

java - 我可以在 JTabbedPane 选项卡中拥有不同大小的 JPanel 吗?

java - [Ljava.lang.Object;不能转换为

java - 我的 JButton 在 Java 中的外观存在问题

java - 从另一个 Activity 更新 Listview 可见 View (行)

java - 为什么 ImageIcon 不起作用?

spring - JSP 中 List 中的 ${employee.id} 抛出 java.lang.NumberFormatException : For input string: "id"

mysql - EntityManager merge() 导致重复行

java - JTable 移动屏幕/指针来搜索文本

java - 如何从图库中获取多张图片并在选择后将它们显示在 LinearLayout 中

java - 可运行 jar 中的 ElasticSearch : lucene problems