2

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

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

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

现在我必须检查以下内容

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

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

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

4

3 回答 3

3

当您使用 NetBeans - 使用内部分析器。这是获取有关您在哪里浪费时间的详细信息的工具。

有关更多信息,请查看 NetBeans 站点,例如

于 2012-06-28T07:18:47.030 回答
3

像这样的启动时间不仅仅是因为拥有一个大 gui 应用程序。我认为问题是您的数据库访问。问题来了:

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

对于您的问题:

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

关于你的问题:

3. 先测量,再切割。在大多数情况下,一些简单的更改可以让您获得 80% 的性能提升。

1. VisualVM是一个很棒的免费工具,它可以帮助您测量 CPU 和内存消耗。而不是相应地(并且仅)更改该代码。

2.我建议看一下ReTest。这是一个相对较新的工具,它实现了一种创新的功能回归测试方法,并结合了基于人工智能的猴子测试。

免责声明:我是 ReTest 背后公司的创始人之一。

于 2017-03-04T23:00:22.060 回答