美文网首页
java内存模型

java内存模型

作者: 书虫大王X | 来源:发表于2021-07-04 21:32 被阅读0次

    1、堆和栈的理解和区别
    2、java内存模型_秋夫人-CSDN博客_java内存模型
    3、Java内存模型_小码农
    4、全面理解Java内存模型_Heaven Wang 的专栏-CSDN博客_java内存模型

    5、jmm内存分配的概念:

    • 堆heap: 优点:运行时数据区,动态分配内存大小,有gc;,缺点:因为要在运行时动态分配,所以存取速度慢,对象存储在堆上,静态类型的变量跟着类的定义一起存储在堆上。
    • 栈stack:存取速度快,仅次于寄存器,缺点:数据大小与生存期必须是确定的,缺乏灵活性,栈中主要存放基本类型变量(比如,int,shot,byte,char,double,foalt,boolean和对象句柄),jmm要求,调用栈和本地变量存放在线程栈上
    • mesi机制:作用在总线上
    • 栈内存:栈内存首先是一片内存区域,存储的都是局部变量,凡是定义在方法中的都是局部变量(方法外的是全局变量),for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量,变量有自己的作用域,一旦离开作用域,变量就会被释放。栈内存的更新速度很快,因为局部变量的生命周期都很短。
    • 堆内存:存储的是数组和对象(其实数组就是对象),凡是new建立的都是在堆中,堆中存放的都是实体(对象),实体用于封装数据,而且是封装多个(实体的多个属性),如果一个数据消失,这个实体也没有消失,还可以用,所以堆是不会随时释放的,但是栈不一样,栈里存放的都是单个变量,变量被释放了,那就没有了。堆里的实体虽然不会被释放,但是会被当成垃圾,Java有垃圾回收机制不定时的收取。
    • 堆栈通过指针联系在一起
    image.png
    image.png
    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:java内存模型

          本文链接:https://www.haomeiwen.com/subject/qusjhltx.html