执行时编译

  刚理解一些这个。原本很多语言都是执行前编译好了,成一长串连接着的01文件。Java是动态编译,执行文件里放着链接,需要用到什么别的文件的时候再加载别的文件,不是一开始,程序运行前就把所有事做好了。

  这样,不是动态编译的语言,保存起来就是一个单一的文件取址,所有的数据是连上块的。动态编译的就是多个取址,用到哪个的时候才去那哪个。

  像线程里跑着程序,非动态的就把一块数据从内存加载到CPU,是连接着的的数据,中间不需要跳跃,读起来就是一条流水;动态编译的就是CPU用到哪一块,再到内存中提取,如果内存中没有就去硬盘上找,而且如果不运行起来,就会事先不知道那一块代码是会用到的,只能在运行时临时去加载。这也是Java慢的原因。

  不过我觉得这样是合理的。只在执行的时候才知道去执行哪一段,事先不知道,对CPU设计和代码设计的人来说都是好事,不用知道对方具体在做什么,不用因为对方会怎么做而有所顾虑。

  这样说的话 Java也并不算是“慢”。

猜你喜欢

转载自www.cnblogs.com/flangrean/p/9458439.html