程序很简单:
public class HelloWorld { public static void main(String args[]){ System.out.println("Hello World"); } }
现在我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);
然后我开始调试HelloWorld.class,它将运行到HashMap中的断点.我很奇怪它put()
在HashMap中会遇到什么问题?
我尝试过HashMap,Hashtable,它们都是一样的.
这是我在重现场景时获得的堆栈跟踪.
当Eclipse启动应用程序时,它不会简单地进入Main函数.在创建实例之前,需要将类加载到JVM中.为此,将使用类加载器.
在您的情况下,URLClassLoader具有使用HashMap对象的URLClassPath类型的成员.
这是因为Eclipse启动应用程序的方式.
LauncherHelper
运行应用程序的Eclipse 类(HelloWorld)调用了一大堆URLClassLoader
其他东西.该URLClassLoader的使用HashMaps
,HashTables
等等.