java | 内存分析

java虚拟机内存的分区

Java虚拟机的内存可以分为三个区域:栈 stack 、堆heap 、方法区:method area

栈的特点:

1、栈描述的是方法执行的内存模开型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)。
2、JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)。
3、栈属于线程私有,不能实现线程间的共享。
4、栈的存储特性是“先进后出,后进先出”。
5、栈是由系统自动分配,速度快!栈是一个连续的内存空间。

堆的特点如下:

1、堆用于存储创建好的对象和数组。
2、JVM里面只有一个堆,被所有的线程共享。
3、堆是一个不连续的内存空间,所以速度慢,但是分配灵活。

当用new来创建一个对象的时候,在堆里面就会自动为它分配好空间。并且会把这个一个对象的常量和方法都加载到截中去。

方法区

方法区(静态区)的特点:

1、JVM只有一个方法区,被所有线程共享。
2、方法区实际也是堆,只是用于存储类,常量相关的信息。
3、用来存放程中永远是不变或只唯一的内容。(比如:类信息,静态变量,字符串常量等)

比如:
 有两个类:
  其中一个类是学生类,有id, name, age, comp, study(), play(),这此方法和属性。
  另一个类是电脑类,只有一个属性 brand

  其实还有两个构造方法,然后因为方法都是存在栈里面,只要对象创建完了,方法就会自己弹出去,最后main方法执行完了,也会被弹出去,然后程序执行完毕。



关注公众号,随时获取最新资讯

细节决定成败!
个人愚见,如有不对,恳请斧正!

posted @ 2020-02-24 22:12  一点浩然气~  阅读(143)  评论(0编辑  收藏  举报