如何在Java中预加载类?

时间:2014-08-07 08:53:34

标签: java classloader preload

在我的Swing界面中第一次打开新的JInternalFrame需要一些时间。根据分析器,大部分时间都花在Classloader.loadClass()方法中。我知道它会在需要时动态加载类,实际上下次打开相同的帧时,它会快得多。

此应用程序有一个登录屏幕,然后是一个空桌面窗格的时间,然后用户打开其中一个内部框架。我认为,由于我有一些"停机时间",我可以使用它在后台预加载一些常见的类,这样当用户实际打开一个内部框架时,它会更快。

有没有办法实现这一点,除了必须生成一个完整的"虚拟指示符"通过我的面板并实际初始化这些类的实例?

理想情况下,如果它可以级联这样的加载,它会更好。有点像ant

中classfileset所做的工作

1 个答案:

答案 0 :(得分:4)

假设您没有对类加载器执行任何特殊操作,可以为要预加载的每个类调用Class.forName(String className)

这将在这些类中执行静态初始值设定项,因此它可能会影响程序的行为(尽管我认为任何此类程序都写得不好)。