.net对象生命周期(垃圾回收)是如何影响和决定其存在与消亡的机制?

2026-04-01 12:030阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计5480个文字,预计阅读时间需要22分钟。

.net对象生命周期(垃圾回收)是如何影响和决定其存在与消亡的机制?

无需程序员操心的堆+——托管堆+——程序在计算机上跑着,难免会占用内存资源来存储运行过程中的数据。我们按照内存资源的存储方式将内存划分为+堆内存和栈内存。+堆内存,

不用程序员操心的堆 —托管堆

  程序在计算机上跑着,就难免会占用内存资源来存储在程序运行过程中的数据,我们按照内存资源的存取方式将内存划分为堆内存和栈内存

  栈内存,通常使用的场景是:对存取速度要求较高且数据量不大。

  典型的栈内存使用的例子就是函数栈,每一个函数被调用时都会被分配一块内存,这块内存被称为栈内存,以先进后出的方式存取数据,在函数执行过程中不断往函数栈中压入(PUSH)数据(值类型数据:int、float、对象的引用...),函数执行完后又将函数栈中的数据逐个弹出(POP),由于是以操作栈的形式来存取,所以访问速度快。

  堆内存,从字面意思上理解就好像是仓库里面可以存一堆破烂,你若是需要存点什么东西就尽管往里面一扔,仓库里有的是空间。事实确实也是如此,堆内存中可以存放大规格的数据(比如对象资源),这些数据是不适合存放在栈中的,因为栈空间的容量有限,这就是堆内存相对于栈内存的好处:容量大。但是它的缺点也是显而易见的,那就是存取堆内存的数据相较于存取栈内存是非常慢的,试想一下,让你在仓库里的一堆破烂里去找你想要的东西是什么感觉。

  从内存分配方式上看,堆内存不同于栈内存,函数栈是在每一个函数被执行的时候被自动分配并且函数执行完成后自动回收,而如果你想使用堆内存,就得自己动手丰衣足食。

阅读全文

本文共计5480个文字,预计阅读时间需要22分钟。

.net对象生命周期(垃圾回收)是如何影响和决定其存在与消亡的机制?

无需程序员操心的堆+——托管堆+——程序在计算机上跑着,难免会占用内存资源来存储运行过程中的数据。我们按照内存资源的存储方式将内存划分为+堆内存和栈内存。+堆内存,

不用程序员操心的堆 —托管堆

  程序在计算机上跑着,就难免会占用内存资源来存储在程序运行过程中的数据,我们按照内存资源的存取方式将内存划分为堆内存和栈内存

  栈内存,通常使用的场景是:对存取速度要求较高且数据量不大。

  典型的栈内存使用的例子就是函数栈,每一个函数被调用时都会被分配一块内存,这块内存被称为栈内存,以先进后出的方式存取数据,在函数执行过程中不断往函数栈中压入(PUSH)数据(值类型数据:int、float、对象的引用...),函数执行完后又将函数栈中的数据逐个弹出(POP),由于是以操作栈的形式来存取,所以访问速度快。

  堆内存,从字面意思上理解就好像是仓库里面可以存一堆破烂,你若是需要存点什么东西就尽管往里面一扔,仓库里有的是空间。事实确实也是如此,堆内存中可以存放大规格的数据(比如对象资源),这些数据是不适合存放在栈中的,因为栈空间的容量有限,这就是堆内存相对于栈内存的好处:容量大。但是它的缺点也是显而易见的,那就是存取堆内存的数据相较于存取栈内存是非常慢的,试想一下,让你在仓库里的一堆破烂里去找你想要的东西是什么感觉。

  从内存分配方式上看,堆内存不同于栈内存,函数栈是在每一个函数被执行的时候被自动分配并且函数执行完成后自动回收,而如果你想使用堆内存,就得自己动手丰衣足食。

阅读全文