纲领

Java的运行时数据区为:

A.     方法区   -----------(线程共有)

B.     堆       -----------(线程共有)

C.     虚拟机栈 -----------(线程私有)

D.     本地方法栈-----------(线程私有)

E.      程序计数器-----------(线程私有)

注意:

A.      线程私有,也就是说每条线程都有一个C,D,E这样的区域,这样才能在各个线程运行时不受影响

B.       线程私有的数据区的生命周期与线程相同

虚拟机栈

该栈为虚拟机执行java方法(字节码)服务,每个方法在执行的时候都会同时创建一个栈帧,用来储存局部变量表(该表存放基本数据类型,对象引用类型等。其中lang,double占用2个局部变量空间,其余的各占一个),操作数栈,动态链接,方法出口等信息

其实,方法的执行就是一个方法的栈帧在虚拟机栈中入栈和出栈的过程

(注意:通常所说的栈,指的就是虚拟机栈,确切地说是虚拟机中局部变量表的一部分)

该区域有两种异常情况:StackOverFlowError和OutOfMemoryError

虚拟机启动时创建,存在的唯一目的就是存放对象的实例,几乎所有的对象都在该区域分配,是GC的主要工作区

方法区

存储类信息,常量,静态变量等数据。GC在该区的主要目标是针对常量池的回收和对类型的卸载

同时注意该区域有“运行时常量池”,用于存放编译期生成的各种字面变量和符号引用。该池的一个重要特征就是具有动态性,也就是说java不要求常量一定只能在编译期间产生,在运行期间也可以将新的常量放入池中,典型的方法就是String类的intern()方法

举例说明:”HelloWorld”.intern(),返回的仍然是Hello World但是这个方法会检查字符串池中是否有“Hello World”这个字符串。如果存在则返回这个字符串的引用,否则就将该串放入池中(注意:这是在运行期间完成的工作,不是编译期),然后返回这个字符串的引用

同时要注意的是,用new 关键字创建的字符串是不会放入字符串池中的,它有自己的地址空间

可抛出的异常:OutOfMemoryError

深入理解java虚拟机学习笔记(一)相关推荐

  1. 深入理解JAVA虚拟机学习笔记(一)JVM内存模型

    摘要:   上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了.这段时间也是各种忙,都一个星期没更新博客了,再不写之前那种状 ...

  2. 【深入理解Java虚拟机学习笔记】第三章 垃圾收集器与内存分配策略

    最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...

  3. 【深入理解Java虚拟机学习笔记】第二章 Java 内存区域与内存溢出异常

    最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...

  4. java 准备 解析_深入理解JAVA虚拟机学习笔记24——类加载的准备和解析

    每天进步一点点! 今天我们一起看一下类加载的准备阶段和解析阶段. 先看一下准备阶段:主要任务是在方法区中为类变量(仅static修饰变量,不包含实例变量)分配内存并设置类变量初始化的阶段. 这里面的区 ...

  5. 深入理解Java虚拟机学习笔记-1.JVM内存模型

    JVM内存模型 1.内存模型结构图 名称 特征 作用 配置参数 异常 程序计数器 占用内存小,线程私有, 生命周期与线程相同 大致为字节码行号指示器 无 无 虚拟机栈 线程私有,生命周期与线程相同,使 ...

  6. java outofmemory_深入理解JAVA虚拟机学习笔记3——OutOfMemoryError异常

    开门见山. 为了方便制造溢出,将JAVA堆的大小调整为10M. 本机用的是IntelliJ IDEA作为开发工具,进入到IDEA的安装目录,如D:\tools\IntelliJ IDEA 2017.1 ...

  7. 深入理解 Java 虚拟机 学习笔记

    第二章 Java 内存区域与内存溢出异常 内存区域 -- from 姜志明 对象创建 加载类 若已经在内存中则跳过. 类加载完以后就可以确定对象所需的空间大小 // TODO why? 分配内存 根据 ...

  8. 深入理解JAVA虚拟机学习笔记11——JDK可视化工具-VisualVM以及案例分析

    VisualVM:多合一故障处理工具,功能比较全面的一个工具,与其它的检测工具相比,对实际性能影响很小,并且还具备安装插件功能.这个工具和前面介绍的JConsole工具有很多类似的功能,但是比JCon ...

  9. java 查看虚拟机状态_深入理解java虚拟机学习笔记(四)虚拟机性能监控与故障处理工具...

    一.JDK的命令行工具 1.jps:虚拟机进程状况工具 作用:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及查看本地虚拟机唯一id. 参数: m:运行时传入主类的参数: v:虚拟机参数: ...

  10. Java 虚拟机学习笔记 | 类加载过程和对象的创建流程

    前言 创建对象是 Java 语言绕不开的话题,那么对象是如何创建出来的呢?我们今天就来聊一聊.对象创建第一步就是检查类是否加载,而类的加载又牵扯到类的加载过程.如果单说对象的创建而绕开类的加载过程,感 ...

最新文章

  1. Java程序员面试中的多线程问题1
  2. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile.java 对应的 dalvik_system_DexFile.cc 本地函数分析 )
  3. Python的冷技巧小技巧
  4. Java网络爬虫实操(8)
  5. 【数据挖掘】数据预处理
  6. 对排除VLAN中Trunk配置故障一文的补充
  7. (20)Zynq FPGA Quad-SPI闪存控制器介绍
  8. 一个封锁操作被对 wsacancelblockingcall 的调用中断_备战秋招——操作系统(3)
  9. Cool_gamesetup.exe山寨版熊猫烧香病毒
  10. UE4 编辑器下生成自定义蓝图类
  11. VLAN隔离技术 — MUX VLAN
  12. 复合函数求导经典例题_【2017年整理】多元函数求导经典例题.ppt
  13. html5 在线设计,推荐十款非常优秀的 HTML5 在线设计工具
  14. 张益唐被曝已证明黎曼猜想相关问题,震动数学界
  15. 【Kotlin开发者社区文章集锦】66篇精选技术精华文章
  16. HTTP请求出现405 not allowed的一种解决办法经验分享
  17. HTTP协议响应状态码(301、302、303的区别)
  18. 控制算法-PID算法总结-从公式原理到参数整定解析(附C源码)
  19. vcruntime140_1.dll
  20. 小数点向前移动三位且保留三位小数

热门文章

  1. 安装+wordpress+出现403+forbidden_Linux安装 Pure-ftpd
  2. 集中器到服务器传输协议,集中器130通讯协议(捷先数码).doc
  3. 面板x轴模式包括哪些_虎扑轻跃 | 体验一汽大众探岳X
  4. RDMA(远程直接数据存取)概述
  5. 算法笔记_什么是数据结构_向量vector
  6. karto探秘之文章索引
  7. 斯坦福大学深度学习公开课cs231n学习笔记(6)神经网路输入数据预处理(归一化,PCA等)及参数初始化
  8. Linux 设备模型
  9. H5与客户端交互的方式有哪些? 怎么做?
  10. axis1 创建service服务端 , axis1 客户端