码迷,mamicode.com
首页 > 其他好文 > 详细

8_分析一下JVM

时间:2018-07-09 23:14:10      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:提醒   数据结构   方法区   ack   jvm   相对   nbsp   ima   info   

JVM虚拟机的内存主要分为五个部分

技术分享图片

 


提醒自己  不能因为方法区的名字而想当然

      实际上方法都存在栈里面

      方法区只是存放class字节码文件和static修饰的变量

 

  方法区  又叫静态区(存放着可供全局使用的static修饰的变量) 存放着class字节码文件

       方法区中包含的都是在程序中永远唯一的元素

 

      每个方法在执行前虚拟机都会为他创建一个栈帧 然后把该栈帧入栈

       栈  的特点是  先入后出

       方法执行完后 虚拟机自动将方法的栈帧进行出栈操作 并销毁

 

  本地方法栈  存放的都是本地方法 大多是直接调用系统资源功能的方法 native修饰

 

     所有用new关键字创建的对象都存在堆里面

 

  程序计数器  可以理解为代码的行号计数器 用来记录程序执行到哪里

 

  

 

栈  

  概念  就是一种数据结构   可以抽象为一个容器 存放栈帧

  特点  先入后出  联想穿鞋需要先穿袜子  , 但是脱鞋时后脱袜子

  入栈  方法执行前创建栈帧 并放入栈

  栈顶  最后入栈的栈帧就是栈顶元素  穿鞋时候最外面的鞋子

  栈底  相对 第一个入栈的元素  个人理解是main方法是栈底

  出栈  方法执行完毕 虚拟机对栈帧执行出栈并销毁操作

 

 

 

方法内定义的变量都存在随方法执行时所产生的各自的栈帧里面  互不影响

8_分析一下JVM

标签:提醒   数据结构   方法区   ack   jvm   相对   nbsp   ima   info   

原文地址:https://www.cnblogs.com/fcfc/p/9286393.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!