开发者社区> 问答> 正文

页面js文件解析执行过程

在高性能javascript书中有如下讲解,感觉甚是不懂!如下:每个文件必须等到前一个文件下载并执行完成才开始下载。 疑问:一些外部引入的js文件不是不能被执行么,还有那些页面加载完后再执行的js文件,这里为什么是下载并执行呢!又晕了,求大神解答!感谢!

展开
收起
小旋风柴进 2016-03-19 09:24:25 2477 0
1 条回答
写回答
取消 提交回答
  • (1) jvm可以理解为一个由c++所编写的内存容器:包含了加载器,编译器等。当然了,我当时最困惑的就是class是怎么被执行的
    Java中的对象模型:OOP-Klass模型
    OOP:普通对象指针,
    Kcass:java类在c++中的对等体
    Kclass想jvm提供的功能:
    实现语言层面的java类
    实现java对象的派发

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    (2) 根据以上所述,是不是明白了些什么呢,关于java的执行器:
    对于任意一门语言,如果不能被编译陈本机的可执行指令,则根本无法运行。众所周知,java编译器会将.java的文件编译成.class的文件
    而.class文件在物理机上是无法执行的,所以才有了(1)中对等层的概念。
    java的编译器分为:模板解析器,c++编译器 最终生产的都是机器码(别怀疑,就是这么做的)
    还有一种最老的是字节码解析器---->为什么现在不用了不知道原因的说

    关于热点代码的问题:在jvm执行期间,会将一些循环的代码,经常用到的代码标记为热点----->那什么是热点呢,热点是怎么运行的呢
    热点代码,会被编译成本地的机器码。在执行期间,会有一个转发表,而热点代码相关的部分会与提前生成的机器码相关联----->提高运行速度

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    (3)java的整个执行流程:
    .java--->.class--->类加载(aop[asm,gcb等],安全验证[为什么说java比较安全呢],连接[在解码中的符号引用])---->生成对等体---->动态编译---->执行
    执行(方法去,堆,栈)。

         java的所有的一切都是在内存中进行的,这也是与c/c+不同的:对于c/c++等写的程序,会直接编译生成机器代码,而java的机器代码是动态生成的,换句话说

    java将编译的过程委托给了虚拟机动态执行

    (4) java的JNI
    JNI即:java本地方法,在jvm想执行class中的方法是,是通过jni才jvm的内存中进行查找,在执行。对于java中的方法,对象等概念,都统一理解为jvm的运行时
    数据就可以了。

    (5)为什么要分方法区,常量区,堆,栈呢
    个人感觉 :程序就是数据结构+方法 在jvm的角度,这些都是给你的运行资源,进行GC等

    2019-07-17 19:07:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript函数 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载

相关镜像