Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:hasJREfinishedInitialization()-如何检查jre是否已完成加载/初始化所有核心类?_Java_Bootstrapping_Runtime Environment - Fatal编程技术网

Java:hasJREfinishedInitialization()-如何检查jre是否已完成加载/初始化所有核心类?

Java:hasJREfinishedInitialization()-如何检查jre是否已完成加载/初始化所有核心类?,java,bootstrapping,runtime-environment,Java,Bootstrapping,Runtime Environment,是否有办法检查是否已加载/初始化所有引导(核心)java类(属于java运行时环境)以用于java 我需要在一种罕见的情况下检查这一点,在这种情况下,我可以访问JRE,但不能访问实际的应用程序,因此我不能简单地等待主应用程序从那一点开始运行和执行。JVM将根据“需要”加载类,因此没有一点可以“全部”加载引导类路径上的类将被加载 也就是说,从1.5及以后,Sun JVM使用“”预加载一组特定的类。我不知道加载了哪些类,但我怀疑它仅限于java.lang包中的类 如果您只是想跟踪类的加载时间,请在启

是否有办法检查是否已加载/初始化所有引导(核心)java类(属于java运行时环境)以用于java


我需要在一种罕见的情况下检查这一点,在这种情况下,我可以访问JRE,但不能访问实际的应用程序,因此我不能简单地等待主应用程序从那一点开始运行和执行。

JVM将根据“需要”加载类,因此没有一点可以“全部”加载引导类路径上的类将被加载

也就是说,从1.5及以后,Sun JVM使用“”预加载一组特定的类。我不知道加载了哪些类,但我怀疑它仅限于
java.lang
包中的类

如果您只是想跟踪类的加载时间,请在启动JVM时使用
-verbose:class
命令行选项。

阅读了您的评论(并意外删除了我的cookie),我所能说的是,无论您尝试做什么,这都是一个更好的选择


但是,如果您一心想修改JRE类,为什么不简单地添加一个静态布尔变量,该变量将在
FileWriter
初始化过程中设置?

文件列表位于
lib\classlist
中。这只是部分正确。例如,如果我在对象类的构造函数中调用一个新的FileWriter,它将崩溃,因为FileWriter类无法实例化,因为还没有对象类。我处于一个可比较的情况下,所以这对我不起作用。不幸的是,我无法控制启动JVM,也没有命令行。@Tom-我认为您需要编辑您的问题,更好地描述您正在尝试做的事情。您关于Object和FileWriter的示例没有意义,因为在调用其构造函数之前,对象类实际上已经被加载和初始化。可能存在静态初始值设定项引用子类的情况?我相信这是唯一一种在类初始化中可以得到循环依赖的情况(我在设计糟糕的单例中经常看到这种情况)。我只是在JRE对象类的构造函数中调用一个新的Filewriter,它会崩溃。但是,如果我添加一个计数器来计算所有加载的对象,并在加载了2000个对象后调用一个新的FileWriter,那么它确实可以在这个构造函数中工作。这是因为正确执行JRE的关键元素尚未初始化。您是在谈论jkernel吗?我第一次听说jkernel,所以恐怕没有;)因为FileWriter只是一个例子。我不能在每个类中都设置这样的布尔值。还有其他建议吗?@Tom-如果你想准确地描述一下你想要实现的目标,那么也许有人能给你一个更好的选择。它可能不包括修改内置的JRE类。我只需要访问使用特定JRE的任何应用程序的所有类、它们的实例、方法和变量,而不需要访问应用程序的源代码,也不需要向应用程序添加新逻辑。如果你想知道,这是个人非分发使用。