• 堆、栈、静态存储


          内存可以分为堆区,栈区,静态存储区。栈区常用来存储程序的局部变量,存储地址由大变小,符合先进后出的特点。效率高存储小,局部变量不用后编译器自动释放内存空间。  栈的容量是M级别的。堆的容量是G级别的。

       堆用来存储对象,它的访问地址则是存在于栈中。程序员可以自己定义对象,new的对象就存储在堆中,良好的编程习惯就是对象使用完后就要释放占用空间,防止产生内存碎片。java有垃圾回收机制GC,如果长时间不用的堆内存,程序也是会自动回收的。存储量大但是效率不高。

        静态存储区存全局变量,常量等。编译器自动创建,到程序结束时释放。像由static,final 修饰的对象都存在于此。

    一、内存基本构成

    可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。

    静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。

    栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

    堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在最后才释放掉动态内存。 但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。

  • 相关阅读:
    Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging
    Chrome浏览器扩展开发系列之十三:消息传递Message
    Chrome浏览器扩展开发系列之十二:Content Scripts
    Chrome浏览器扩展开发系列之十一:NPAPI插件的使用
    Chrome浏览器扩展开发系列之十:桌面通知Notification
    《转载》使用CSS3 Flexbox布局
    CSS display属性的值及作用
    CSS中的各种居中方法总结
    《转载》详解 CSS 属性
    CSS3中新增的内容
  • 原文地址:https://www.cnblogs.com/a6948076/p/7864822.html
Copyright © 2020-2023  润新知