内存分析

Java虚拟机的内存可以分为三个区域:栈(Stack)、堆(Heap)、方法区(Method Area),实际上方法区也在堆里。
 
栈的特点:
  • 栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等),方法执行完毕,自动释放掉
  • JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
  • 栈属于线程私有的,不能实现线程间的共享!
  • 栈的存储特性是“先进后出” 
  • 栈是由系统自动分配的一个连续的内存空间,速度快
 
 
堆的特点:
  • 堆的访问是公共的
  • 堆用于存储new出来的对象和数组(数组也是对象)
  • 堆是一个不连续的内存空间,分配灵活,速度慢
  • 需要垃圾回收器来回收
 
 
方法区(静态区
  •  JVM只有一个方法区,被所有线程共享
  • 方法区实际也是堆,只是用于存储类、常量相关的信息
  • 用来存放程序中永远是不变或唯一的内容(代码、静态变量字符串变量
 
从主函数入口开始分析:
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2019-10-20 15:45  Kundalini  阅读(128)  评论(0编辑  收藏  举报