JVM:
A a = new A();
a,放到栈 内存
new A,放到 推内存
static 静态变量放在, 方法区
各个线程共享的内存区域,数据共享: 堆, 方法区
各个线程不共享的内存区域,数据不同线: 程序计数器,虚拟机栈(栈帧),本地方法栈(每个线程都有一份)
程序计数器:执行.class 字节码,指示器,每个线程都有一个程序计数器。 例:执行循环后,程序往下执行的位置
虚拟机栈: 局部变量,局部变量表主要存放了编译器可知的各种数据类型。和 对象引用。
虚拟机栈会出现两种异常:StackOverFlowError (栈内存允许动态扩展)和 OutOfMemoryError(栈内存不允许动态扩展) 栈内存用完了:
本地方法栈:本地方法栈则为虚拟机使用到的 Native 方法服务 。
堆 :此内存区域的唯一目的就是存放对象实例,Java堆还可以细分为:新生代和老年代(新生代垃圾回收后,如果对象还存活,则会进入 s0 或者 s1,并且对象的年龄还会加 1)
方法区 :方法区与 Java 堆一样,是各个线程共享的内存区域。被虚拟机
原文地址:https://www.cnblogs.com/sjbd/p/13087790.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。