JVM运行时内存组成分为一些线程私有的,其他的是线程共享的. 线程私有 程序计数器:当前线程所执行的字节码的行号指示器. Java虚拟机栈:java方法执行的内存模型,每个方法被执行时都会创建一个栈帧,存储局部变量表,操作栈,动态链接,方法出口等信息.每个线程都有自己独立的栈空间,线程栈只存储基本类型和对象地址,方法中局部变量存放在线程空间中. 本地方法栈:Native方法服务,在hotspot虚拟机中和java虚拟机栈合二为一. 线程共享 java堆:存放对象实力,几乎所有的对象实例及其属性都…
  1.JVM内存模型       JVM运行时内存=共享内存区+线程内存区 1).共享内存区       共享内存区=持久带+堆       持久带=方法区+其他       堆=Old Space+Young Space       Young Space=Eden+S0+S1 (1)持久带       JVM用持久带(Permanent Space)实现方法区,主要存放所有已加载的类信息,方法信息,常量池等等.可通过-XX:PermSize和-XX:MaxPermSize来指定持久带初始化…
原文转载自:http://my.oschina.net/sunchp/blog/369707 1.JVM内存模型 JVM运行时内存=共享内存区+线程内存区 1).共享内存区 共享内存区=持久带+堆 持久带=方法区+其他 堆=Old Space+Young Space Young Space=Eden+S0+S1 (1)持久带 JVM用持久带(Permanent Space)实现方法区,主要存放所有已加载的类信息,方法信息,常量池等等. 可通过-XX:PermSize和-XX:MaxPermSiz…
[转]http://www.cnblogs.com/dolphin0520/p/3783345.html 目录[-] 1.为什么会有年轻代 2.年轻代中的GC 3.一个对象的这一辈子 4.有关年轻代的JVM参数 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描.而我们的很多对象都是朝生夕死的,如…
详细了解JVM运行时内存 1.程序计数器 概念 程序计数器也叫作PC寄存器,是一块很小的内存区域,可以看做是当前线程执行的字节码的行号指示器.字节码的解释工作就是通过改变程序计数器里面的值来获得下一条需要执行字节码的指令. 特点 Pc寄存器表现为一块内存,功能是存放伪指令,确切的说是存放的将要执行指令的地址. 当虚拟机正在执行的是一个native方法时,JVM的PC寄存器存储的值是undefined. 程序计数器是线程私有的,它的生命周期和线程一样,每个线程只有一个.这也是为了保证多线程下,线程…
在上一篇文章中,我们介绍了 JVM 的内存区域,本文我们将继续围绕 JVM 展开话题,介绍 JVM 运行时内存.关注我的公众号「Java面典」了解更多 Java 相关知识点. Java 堆从 GC 的角度还可以细分为: 新生代(Eden 区.Survivor From 区和 Survivor To 区,默认情况下年轻代按照 8 : 1 : 1 的比例来分配)和老年代. 新生代 新生代用来存放新创建的对象,默认占据堆 1/3 的空间: 由于新创建对象都会在新生代申请内存区域,所以会导致新生代会频繁…
目录 1 JVM的内存区域布局 2 JVM五大数据区域介绍 3 JVM运行时内存布局和JMM内存模型区别 4 JMM内存模型交互操作 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 JVM的内存区域布局 java代码的执行步骤有三点 java源码文件->编译器->字节码文件 字节码文件->JVM->机器码 机器码->系统CPU执行 JVM执行的字节码需要用类加载来载入:字节码文件可以来自本地文件,可以在网络上获取,也可以实时生成.就是说你可以跳过写java代码阶段,直接…
一.jvm的概念 在了解jvm的概念之前,我们先来了解java平台的逻辑结构,图片来自<深入java虚拟机> 从图中我们可以看到jdk包含了jre,java语言和java开发工具和Api,jre包含了java运行的基础类库和java虚拟机,java虚拟机支撑着java程序的运行. jvm(java virtual machine)翻译为java虚拟机,从字面上来理解,jvm就是一个虚拟的机器,其实类似于一个操作系统,通过软件去虚拟出一个虚拟机,帮助我们管理计算机的内存和调用计算机的硬件等等.而…
参考的优秀文章 <深入理解Java虚拟机 JVM高级特性与最佳实线>(机械工业出版社) Java虚拟机的堆.栈.堆栈如何去理解? 聊聊JVM的年轻代 前言 本文是<深入理解Java虚拟机 JVM高级特性与最佳实线>(机械工业出版社)的读书笔记,记录阅读后的部分理解.推荐这本书,深入浅出讲解了Java虚拟机的知识. 疑问及解答 Java运行时有哪几个常用的内存空间? PC寄存器 Java虚拟机栈 本地方法栈 Java堆 方法区 PC寄存器 PC为Program Counter的意思,…
在读正文之前,阅读以下两篇博客学习并理解堆栈.作用域.本地方法的概念. 作用域:https://www.cnblogs.com/AlanLee/p/6627949.html 操作数栈:https://denverj.iteye.com/blog/1218359 (必读) 堆内存和栈内存:https://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html (必读) 一.区域划分(包含5个区域,其中程序计数器.虚拟机栈.本地方法栈为线程私有的,堆…