gpt4 book ai didi

java - 如何在启动应用程序时加载所有资源?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:41:16 30 4
gpt4 key购买 nike

Java 在需要时加载资源。这使得我的小型桌面应用程序在打开窗口时速度非常慢。

如何在启动应用程序时加载所有资源?与类加载器有关吗?

编辑:this code如果文件在 jar 中,可以工作吗?

EDIT2:请注意,目的不是减少启动时间,而是减少应用程序启动后打开新窗口的时间。我希望所有资源都进入内存并保持“随时可用”状态,因此加载后应用程序将以更快的速度运行用户的命令。

最佳答案

Java loads the resources as they are needed.

实际上,它比这更复杂。如果你有一个静态依赖类 B 的类 A,而类 B 静态依赖于类 C,然后加载 A 将触发 eager 加载 BC 等等。但是一些库(我认为 AWT 和 Swing 会这样做)在内部使用 Class.forName(...) 方法来延迟加载实现类。这减少了最初加载的类的数量,并且(理想情况下)避免加载您的应用程序永远不会使用的代码。

How can I do to load all the resources when starting the app?

我想您可以创建显式静态依赖项来克服上面的惰性,但这可能不会使您的应用程序的初始窗口显示得更快。更好的策略是尝试使用更多延迟加载来减少需要加载以使初始窗口可见的代码量。但这需要明智地完成。如果您延迟加载初始窗口所需的类,实际上可能会使启动变慢。

编译为 native 代码(例如使用 GCJ)是另一种选择,但这有很多缺点;例如更大的二进制文件、更多的 native 库依赖性、可移植性问题、(可能)长时间运行的应用程序的执行速度较慢。

关于您的编辑:我认为该代码会“起作用”,但我看不出它如何可能加快您的应用程序的启动速度。

关于java - 如何在启动应用程序时加载所有资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2916425/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com