Flo*_* Li 17 java debugging breakpoints
程序很简单:
public class HelloWorld {
public static void main(String args[]){
System.out.println("Hello World");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我put(K key, V value)
在HashMap.class 中将断点设置为函数
public V put(K key, V value) {
if (table == EMPTY_TABLE) {
inflateTable(threshold);
}
if (key == null)
return putForNullKey(value);
int hash = hash(key);
Run Code Online (Sandbox Code Playgroud)
然后我开始调试HelloWorld.class,它将运行到HashMap中的断点.我很奇怪它put()
在HashMap中会遇到什么问题?
我尝试过HashMap,Hashtable,它们都是一样的.
VAn*_*rei 17
这是我在重现场景时获得的堆栈跟踪.
当Eclipse启动应用程序时,它不会简单地进入Main函数.在创建实例之前,需要将类加载到JVM中.为此,将使用类加载器.
在您的情况下,URLClassLoader具有使用HashMap对象的URLClassPath类型的成员.
这是因为Eclipse启动应用程序的方式.
LauncherHelper
运行应用程序的Eclipse 类(HelloWorld)调用了一大堆URLClassLoader
其他东西.该URLClassLoader的使用HashMaps
,HashTables
等等.