当我们创建第一个类的对象时,实例方法的入口地址会完成分配,当后续在创建对象时,不会再分配新的入口地址,也可以说,该类的所有对象共享实例方法的入口地址,当该类的所有对象被销毁,入口地址才会消失。这句话对吗?
这个应该是在说方法标记。因为同一个类的实例(对象),如果每一个里面都保存同样的方法的话,太占内存。所以,当new一个对象的时候,jvm在堆内存中保存这个对象,这个对象里面会保存一个方法标记,方法标记指向方法区里面的方法。方法区中存放的是class文件,里面包括了方法。所以,销毁了堆内存中的对象之后,方法区的方法应该还是存在的,因为class还在。至于方法标记,也就是入口地址,我认为应该不在了,因为对象没了。应该是对的。
你的这个入口地址怎么理解?类在内存中的位置?最后一句话,类的对象消失,入口地址消失,你这想说的是类从栈里面退出吗?但是类的退出不是受的对象影响吧,是我们去控制这个类的卸载退出不啊。换句话说,就算一个类没有实例化【但是初始化了】,他的对象是不存在的,但是这个类是存在的啊,入口肯定不存在消失一说啊
1,一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。由Java虚拟机自带的类加载器所加载的类,在虚拟机的生命周期中,始终不会被卸载。包括根类加载器,扩展类加载器和系统类加载器,Java虚拟机本身会始终引用这些类加载器
2,我们自己定义的类属于 应用程序类加载器,他的调用就比如new user(),你想让该类卸载消失比如System.gc();