博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8_分析一下JVM
阅读量:5154 次
发布时间:2019-06-13

本文共 643 字,大约阅读时间需要 2 分钟。

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

 

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

      实际上方法都存在栈里面

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

 

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

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

 

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

       栈  的特点是  先入后出

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

 

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

 

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

 

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

 

  

 

栈  

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

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

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

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

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

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

 

 

 

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

转载于:https://www.cnblogs.com/fcfc/p/9286393.html

你可能感兴趣的文章
Caroline--chochukmo
查看>>
利用jquery的contains实现搜索功能
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>