【问题标题】:Testing a Swing application测试 Swing 应用程序
【发布时间】:2023-04-09 06:55:02
【问题描述】:

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

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

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

现在我必须检查以下内容

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

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

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

【问题讨论】:

    标签: java hibernate swing memory-management jprofiler


    【解决方案1】:

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

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

    对于您的问题:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        关于您的问题:

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

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

        for 2. 我建议看看ReTest。它是一种相对较新的工具,将功能回归测试与基于 AI 的猴子测试相结合,实现了一种创新的方法。

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

        【讨论】:

        猜你喜欢
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        • 2018-07-13
        • 2010-11-01
        相关资源
        最近更新 更多