现在我的同事提出想在java虚拟机运行之后,其中的某个类或者是某个jar包,需要更新,但是他不想停止java虚拟机的运行,而把更新的类或者jar包让java虚拟机重新加载,而且让java虚拟机把已经存在的和这个类或者jar包相关的对象清除,而重新用更新的类和jar包进行事例化,从他一提出这样的想法我就坚决的反对,我觉得这样做实现不了,或者说即使实现的话也会出问题。不知道论坛上的java 高手 对于这个想法怎么看???  欢迎大家讨论。

解决方案 »

  1.   

    个人理解,这种想法应该不可行:
       java虚拟机在执行程序之前需要为各个类、模块等等分配内存空间,以便执行期间调用
       重新加载更新的类和jar包意味着重新分配空间,虚拟机应该需要重启。我是小菜鸟一个,这样理解不知正不正确。期待牛人解答~
      

  2.   

    你可以去看看ClassLoader的用法
      

  3.   

    发表于:2008-09-12 10:12:133楼 得分:0 
    你可以去看看ClassLoader的用法 我知道ClassLoader 可能可以重新加载某个类,但是有这样一个问题,如果程序中正在应用要被更新的类的实例,如果使java虚拟机垃圾回收这些实例,而用刚加载的类,而重新实例化一些对象应用,还是直接就是把要应用这些实例的业务逻辑抛弃。