JVM(Java虚拟机)内存可以分为三个区域:栈(stack)、堆(heap)、方法区(method area)
栈:
1、JVM为每一个线程创建一个栈,用于存放该线程执行方法的信息(局部变量、实际参数等),栈帧属于线程私有,不能共享
2、每个方法被调用都会创建一个栈帧
3、栈是由系统自动分配,速度快,是一个连续的内存空间
堆:
1、JVM只有一个堆,被所有线程共享
2、堆用于储存创建好的对象
3、堆是一个不连续的内存空间,速度慢
方法区:
1、方法区实际也是堆
2、JVM只有一个方法区,被所有线程共享
3、方法区用来存放程序中永远不变或者唯一的内容,如(类信息、静态变量、静态方法、字符串常量)
示例:
源代码.png
内存分析.png
网友评论