现在的位置: 首页 > 综合 > 正文

关于虚拟机的一点想法

2013年12月01日 ⁄ 综合 ⁄ 共 511字 ⁄ 字号 评论关闭

这里所说的虚拟机,侧重于"虚拟指令计算机"的含义。

如果基于java指令实现虚拟机,并且支持多进程,考虑当执行某个java指令时要求加载一个X类,应该如何处理?

首先,应该由bootloader来加载X类。bootloader加载以"java"开头的package里面的类。java类加载体系支持应用扩展,但首先委托bootloader加载。

类可以加载,也可以卸载,当没有使用者的时候。比如,某个进程终止了,它使用了一些仅它自己引用的类。因此,该进程终止时,这些类所占的资源应该释放。

所以,实现虚拟机时,应该考虑卸载的需要。倘若不考虑卸载,那么随着进程不断地创建和销毁,系统资源将越来越少,以至不可用了。

由于一个类可能被多个进程引用,因此应该交给虚拟机来维护。假设,无论由bootloader还是其它加载器load,都有可能共享。虚拟机或许采用引用计数的方法,

若一个类的引用计数为0,就可以随时卸掉它。

:一个类有main函数,执行这个类,就创建一个进程。

由于刚才讨论的类的共享特点,可能所有的类由虚拟机维护在全局区里。

:加载一个类,类的静态变量,属于进程。也就是说每个进程一份副本。类的静态初始化代码,也在进程范围内执行。

 

 

抱歉!评论已关闭.