8_分析一下JVM

Posted fcfc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8_分析一下JVM相关的知识,希望对你有一定的参考价值。

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

技术分享图片

 


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

      实际上方法都存在栈里面

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

 

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

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

 

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

       栈  的特点是  先入后出

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

 

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

 

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

 

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

 

  

 

栈  

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

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

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

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

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

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

 

 

 

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


以上是关于8_分析一下JVM的主要内容,如果未能解决你的问题,请参考以下文章

8 Jvm堆分析

Java源码分析——String

JVM_使用JProfiler进行内存分析01(17)

JVM的学习3_____逃逸分析与栈上分配

6 款 Java 8 自带工具,轻松分析定位 JVM 问题

6 款 Java 8 自带工具,轻松分析定位 JVM 问题