• 技术文章 >Java >java教程

    java 栈和堆区别详细介绍

    高洛峰高洛峰2017-01-24 14:40:47原创995
    java 栈和堆区别

    1, 垃圾回收机制仅仅作用于堆内存,与栈内存无关;

    2, 栈:stack 栈的存取速度比堆快,效率高 保存局部变量和对象的引用值

    3, 堆:保存较大的变量

    4, 栈有一个很重要的特殊性,就是存在栈中的数据可以共享

    编译器处理int a = 3 时,首先会在栈中创建一个变量为a的引用,然后查找栈中是否存在3这个值,如果不存在,就将3存放进来;

    处理b = 3时,也是这样,因为之前将3存放进来了,所以此时编译器只需将创建b这个变量再指向3就行了(有利于节省空间)。
    这个时候就出现a和b同时指向3的情况,但不影响他们的使用。如果此时又定义a = 4;,则需将4存放进内存,由a指向4,a值的修改不会影响到b值。

    内存的划分:
     
     
    1,寄存器。
    2,本地方法区。
    3,方法区。
    4,栈内存。
     存储的都是局部变量。
     而且变量所属的作用域一旦结束,该变量就自动释放。
    5,堆内存。
     存储是数组和对象(其实数组就是对象) 凡是new建立在堆中。
     特点:
     1,每一个实体都有首地址值。
     2,堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数0.0或者0.0f,boolean false char '\u0000'
     3,垃圾回收机制。

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    更多java 栈和堆区别详细介绍相关文章请关注PHP中文网!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java 栈和堆
    上一篇:浅谈静态变量、成员变量、局部变量三者的区别 下一篇:Java实现简单堆栈代码
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 实例介绍基于Java实现一个复杂关系表达式过滤器• Java之对象销毁和finalize方法的使用• 详细解析java词法分析器DDL递归应用• java实例解析之1M图片压缩优化到100kb• 完全掌握Java动态代理
    1/1

    PHP中文网