zoukankan      html  css  js  c++  java
  • Java程序运行时的几个区域

    Java运行时涉及到的区域

    几个基本概念:
    1.Java对象     2.Java方法    3.一个编译好的类,以class文件的形式出现
    4.Java的本地方法   5.线程私有和线程共有
     
    一、方法区(永久代) 和 堆(heap)
     
           这两个区域是线程共有的,供所有线程使用。所以,对存放在这两个地方的资源进行操作时,如果是程序是多线程的,那么要考虑同步。
           方法区存放的是类的类型信息。类的类型信息有,类的静态变量,其它从class文件中读取到的信息。
           当用户访问一个类的静态方法或者类的静态变量,或者使用该类来创建一个对象时,如果方法区中还没有该类的信息,那么,类加载系统就会找寻对应的类文件,将其加载到方法区中
           用户在运行程序的过程中,程序根据需要会动态创建若干对象,这些创建的对象将会存放在堆上,也就是堆上存放的是动态创建的对象。
    二、虚拟机栈(java stack) 和本地方法栈,程序计数器
     
           虚拟机栈,本地方法栈,程序计数器,这三个区域是线程私有的。也就是说,每个线程都有着三个东西。各个线程都独自方法自己的这三个区域。
           虚拟机栈和程序计数器:
           栈帧,存放了描述一个java方法的调用状态的数据;虚拟机栈是由栈帧组成的。
           一个Java方法调用状态包含:该方法的本地变量,调用该方法时传递的参数,该方法的返回值,执行过程中的中间结果。
            当一个线程,要执行一个方法时,那么,就会将该方法对应的栈帧入栈到虚拟机栈中;方法执行完毕,就将该栈帧从虚拟机栈中出栈。
            在执行方法的时候,程序计数器,记录者线程要执行的下一条指令。
     
           本地方方法栈,是专门用来保存本地方法的调用状态的。
      
    ----------------------------------------------------------------------------------------------------------------------------------
     参考资料:
     
  • 相关阅读:
    AngularJS之开发组件的一些思路
    [译]React Context
    前端好玩技术中转站
    《JavaScript高级程序设计》笔记整理
    React-Router学习整理
    AngularJS中的模板安全与作用域绑定
    React问题总结与归纳
    AngularJS中的按需加载ocLazyLoad
    AngularJS+Node的RESTful之基本实现
    AngularJS中的指令
  • 原文地址:https://www.cnblogs.com/ttylinux/p/3887123.html
Copyright © 2011-2022 走看看