zoukankan      html  css  js  c++  java
  • 无法逃避的装箱和拆箱

    概念

    装箱:由值类型转换为引用类型

    拆箱:由引用类型转换为值类型

    代码解析

    逐步分析以上代码:

    1 int i=5; 在栈中新建变量i,值为5

    2 object o=i;在堆中新建变量o,储存实际值5,并将5在堆中的地址储存在栈中

    3 int j=(int)o;在栈中新建变量j,通过栈中o的地址访问对应内存的值,并将该值储存在栈中j的地址上

    图解

    补充

    从代码分析和图解可以看出装箱和拆箱存在以下问题:

    1 占用空间,装箱和拆箱在堆和栈上开辟空间,已占用的空间无法及时回收

    2 性能影响,拷贝占用CPU,额外的资源开销

    疑惑解答

    为什么装箱比拆箱开销大?

    从图上可以看出装箱和拆箱都涉及空间的开辟,但装箱不仅有指针耗费,还有拷贝占用CPU资源,从这两点上说装箱比拆箱更占用资源。

    建议:尽量避免使用装箱和拆箱

  • 相关阅读:
    正则表达式入门教程
    js获取class
    锋利的jQuery第6章 jQuery与Ajax的应用
    显示隐藏左侧菜单
    unicode转为汉字
    $.ajax
    .ashx文件
    c#正则表达式
    调试发现的小错误
    sql2005连接不到本地数据库
  • 原文地址:https://www.cnblogs.com/arvinzd/p/14143906.html
Copyright © 2011-2022 走看看