Java运行时涉及到的区域

几个基本概念:
1.Java对象     2.Java方法    3.一个编译好的类,以class文件的形式出现
4.Java的本地方法   5.线程私有和线程共有
 
一、方法区(永久代) 和 堆(heap)
 
       这两个区域是线程共有的,供所有线程使用。所以,对存放在这两个地方的资源进行操作时,如果是程序是多线程的,那么要考虑同步。
       方法区存放的是类的类型信息。类的类型信息有,类的静态变量,其它从class文件中读取到的信息。
       当用户访问一个类的静态方法或者类的静态变量,或者使用该类来创建一个对象时,如果方法区中还没有该类的信息,那么,类加载系统就会找寻对应的类文件,将其加载到方法区中
       用户在运行程序的过程中,程序根据需要会动态创建若干对象,这些创建的对象将会存放在堆上,也就是堆上存放的是动态创建的对象。
二、虚拟机栈(java stack) 和本地方法栈,程序计数器
 
       虚拟机栈,本地方法栈,程序计数器,这三个区域是线程私有的。也就是说,每个线程都有着三个东西。各个线程都独自方法自己的这三个区域。
       虚拟机栈和程序计数器:
       栈帧,存放了描述一个java方法的调用状态的数据;虚拟机栈是由栈帧组成的。
       一个Java方法调用状态包含:该方法的本地变量,调用该方法时传递的参数,该方法的返回值,执行过程中的中间结果。
        当一个线程,要执行一个方法时,那么,就会将该方法对应的栈帧入栈到虚拟机栈中;方法执行完毕,就将该栈帧从虚拟机栈中出栈。
        在执行方法的时候,程序计数器,记录者线程要执行的下一条指令。
 
       本地方方法栈,是专门用来保存本地方法的调用状态的。
  
----------------------------------------------------------------------------------------------------------------------------------
 参考资料:
 

Java程序运行时的几个区域的更多相关文章

  1. Java程序运行时内存划分

    1.Java程序跨平台运行的原因 主要原因是:各种平台的JVM和字节码文件 Java源程序--具体平台的机器代码文件---被编译器翻译成平台无关的Class文件,又用特定JVM运行字节码文件,JVM在 ...

  2. java程序运行时内存分配详解

    java程序运行时内存分配详解 这篇文章主要介绍了java程序运行时内存分配详解 ,需要的朋友可以参考下   一. 基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个 ...

  3. java程序运行时内存分配详解 (转)

    转自:http://www.tuicool.com/articles/uU77v2 一.  基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Ja ...

  4. [Java]程序运行时的内存分配

    本文出处:<Thinking in JAVA> 寄存器这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有限,所以寄存器根据需求进行分配.你不能直接控制 ...

  5. 关于Java虚拟机运行时数据区域的总结

    Java虚拟机运行时数据区域 程序计数器(Program Counter) 程序计数器作为一个概念模型,这个是用来指示下一条需要执行的字节码指令在哪. Java的多线程实际上是通过线程轮转做到的,如果 ...

  6. 基础知识《零》---Java程序运行机制及运行过程

    Java运行机制 Java虚拟机(Java Virtual Machine):Java虚拟机可以理解成一个以字节码为机器指令的CPU:对于不同的运行平台,有不同的虚拟机:Java虚拟机机制屏蔽了底层运 ...

  7. 《深入理解Java虚拟机》(二)Java虚拟机运行时数据区

    Java虚拟机运行时数据区 详解 2.1 概述 本文参考的是周志明的 <深入理解Java虚拟机>第二章 ,为了整理思路,简单记录一下,方便后期查阅. 2.2 运行时数据区域 Java虚拟机 ...

  8. Java虚拟机运行时数据区

    运行时数据区程序计数器Java虚拟机栈本地方法栈Java堆(GC堆)方法区运行时常量池 运行时数据区 Java虚拟机在运行Java程序时,会将它所管理的内存划分为若干个内存区域.这些数据区域有各自的用 ...

  9. 1、Java语言概述与开发环境——Java程序运行机制

    Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...

随机推荐

  1. 第十七次ScrumMeeting会议

    第十七次Scrum Meeting 时间:2017/12/7 地点:线上+主235 人员:蔡帜 王子铭 游心 解小锐 王辰昱 李金奇 杨森 陈鑫 赵晓宇 照片: 目前工作进展 名字 今日 明天的工作 ...

  2. opencart

    1. Deleting english language, what happens?   Disable English tab , category and products     1) Fir ...

  3. ACM 第六天

    图论 网络流 最大流 INF(初始值) 路径上权值最小的边,决定流量大小. 流量网络的三个特性: ①流量控制 ②反对称性 ③流量守恒 残余网络:保留了c(e)容量<f(e)流量[可以继续流,因为 ...

  4. iOS- <项目笔记>项目配置常见文件

    项目常见文件 1.main.m * 里面有一个程序的入口:main函数 2.Prefix.pch文件 * pch文件中的内容能被项目中的其他任何文件共享\包含\访问 * 如果定义的内容只用在OC环境中 ...

  5. jQuery动态添加li标签并添加属性和绑定事件

    代码如下: <%@page import="java.util.ArrayList"%> <%@ page language="java" c ...

  6. 认识简单的C

  7. 【alpha】Scrum站立会议第1次····10.16

    小组名称:nice! 小组成员:李权 于淼 杨柳 刘芳芳 项目内容:约跑app 1.任务进度 成员 已完成 当日要完成 李权 搭建好Android Studio环境 数据库设计 于淼 搭建好Andro ...

  8. C/S结构 B/S结构

    [1]C/S 结构,即大家熟知的客户机和服务器结构.它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销.目前大多数应 ...

  9. opencv里vector的内存的申请和释放的问题

    改成: ); CvSeq * m_contour=; cvFindContours( &IPlImage(img), m_storage, &m_contour, ,)); //释放内 ...

  10. Redis 学习之集群

    该文使用centos6.5 64位  redis3.2.8 一.  redis-cluster架构图 集群通信:所有redis节点之间通过PING-PONG机制彼此互联,内部使用二进制鞋子优化传输速度 ...