C#销毁资源,释放内存,GC垃圾回收
1. 什么是资源?.NET框架中如何访问资源?
1)资源就是程序中可利用的数据,譬如:字符串,图片和任何二进制数据,包括任何类型的文件。
2)访问一个资源需要如下几个步骤
分配内存空间
初始化内存
使用资源
销毁资源
释放资源
2. 什么是托管资源,什么是非托管资源?
托管资源是由CLR全权负责的资源,CLR不负责的资源则为非托管资源。
托管资源由GC自动回收
非托管资源通过代码手动清除(StreamReader,FIleStream,数据库的连接,GDI+的相关对象,套接字,COM组件等)
3. 如何正确释放资源?
托管的内存资源,系统以及给为我们进行了管理。
对于非托管的资源,则需要我们手动清除。
如何去释放,.Net提供了三种方法,大致如下
1)析构函数
2)继承IDispisable接口,实现DIspose方法
3)提供Close方法
4. 什么是GC
GC是指垃圾回收。垃圾回收是指.NET清理托管堆上不会在被使用的对象所占用的内存,并且移动仍在被使用的活动对象,从而使他们所占的内存空间保持连续。垃圾回收仅需要2步即可完成执行过程。
程序员不需要手动干预GC垃圾回收的过程,但.NET中的CLR仍然提供了一个手动执行垃圾回收的GC.Collect()方法。但不建议成员员调用此方法。GC回收是一个相对耗费资源的过程,程序员应尽量减少不必要的垃圾回收次数。
5. 什么是代?
代是指GC将托管堆内的对象按照被调用的可能性的分类。GC按照被调用的可能性将托管堆内的对象分为3类,.NET将这样的分类定义为代。
依据.NET垃圾回收机制,0代,1代,2代的初始分配空间分别为256KB,2MB,10MB。代越小释放的几率就越高,但每一次GC释放对象时,仍然被使用的对象实例将被转移到下一代。
C#销毁资源,释放内存,GC垃圾回收相关推荐
- 后端学习 - JVM(上)内存与垃圾回收
JVM 架构图 文章目录 一 JVM 简介 二 类加载子系统: 1 作用 2 类的三个加载过程 3 类加载器的分类 4 双亲委派机制 5 两个 class 对象为同一个类的必要条件 三 运行时数据区: ...
- 尚硅谷 宋红康 JVM教程_01_内存与垃圾回收篇——02
本系列相关链接 尚硅谷 宋红康 JVM教程_01_内存与垃圾回收篇--01 (20210103-20210110) https://blog.csdn.net/wei198621/article/de ...
- Java进阶 JVM 内存与垃圾回收篇(一)
JVM 1. 引言 1.1 什么是JVM? 定义 Java Vritual Machine - java 程序的运行环境(Java二进制字节码的运行环境) 好处 一次编译 ,到处运行 自动内存管理,垃 ...
- JVM最详细知识点笔记-内存与垃圾回收篇
内存与垃圾回收 一.JVM与JAVA体系结构 1.1 概述 JAVA虚拟机: 含义: Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语 ...
- 尚硅谷-宋红康-JVM上中下篇完整笔记-JVM上篇_内存与垃圾回收篇
前言 一.jvm及java体系结构 1. Java及JVM简介 TIOBE语言热度排行榜 https://www.tiobe.com/tiobe-index/ 世界上没有最好的编程语言,只有最适用于具 ...
- JVM——内存与垃圾回收
JVM--java virtual machine java虚拟机就是二进制字节码运行的环境 特点: 一次编译,导出运行 自动内存管理 自动垃圾回收 文章目录 JVM--java virtual ma ...
- jvm内存与垃圾回收重点总结
文章目录 一.jvm简介 1.jvm的位置 2.JVM的整体结构 3.java代码执行流程 二.类加载子系统 1.类的加载过程 2.类加载器分类 ⭐3.双亲委派机制 三.运行时数据区及线程 四.程序计 ...
- java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句
本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...
- 不要再问我“Java GC垃圾回收机制”了
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! Java GC垃圾回收几乎是面试必问的JVM问题之一,本篇文章带领大家了解Java GC的底 ...
最新文章
- Java Socket实战之五:使用加密协议传输对象
- 【数据库】数据库单表对比
- vue cli 脚手架上多页面开发 支持webpack2.x
- Java数据结构-基于数组的栈和泛型
- cocos2d-x android 环境搭配,cocos2d-x Android环境配置问题和解决方法
- 后台系统可扩展性学习笔记(五)负载均衡
- 【用户画像学习笔记】——社交网络平台的用户画像介绍
- 关于SPSS软件的使用
- 淘宝/天猫商品优惠券查询API接口,优惠券API接口
- Win11 Windows聚焦失效修复方法
- 欧洲能源商品期货股票套利
- 美团外卖API接入(二)
- Matplotlib和Seaborn(离散数据的图表选择与一些使用技巧)
- svn服务端删除版本库_【SVN】彻底 svn 服务器上的 删除某一个文件或文件夹
- 反激变换器 闭环 仿真 flyback MATLAB simulink 输入60v,输出30v
- 太空上新 | 张肇达 张凯惠:嫦娥奔月有了现实版
- 展示5G和AI的魅力,智博会这个展区为啥人气最旺?
- 奔驰GLA改色贴膜珍珠白效果图东莞奔驰改装
- MacOS下载并配置gradle
- ISO感光度 光圈 快门 景深