unity学习(垃圾回收,资源释放)

这篇具有很好参考价值的文章主要介绍了unity学习(垃圾回收,资源释放)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在C++中,所有你在堆上申请的内存空间,必须手动释放掉,否则就会造成内存的泄露。
C#使用了GC(Garbage Collector)来进行内存的管理以达到自动释放不需要的内存的目的,但是GC并不能做的十分完美,对于一些非托管资源,GC无能为力,这就要求我们必须手动的释放那么非托管资源。文章来源地址https://www.toymoban.com/news/detail-559851.html

托管与非托管资源

  • 托管资源:是指由垃圾收集器(GC)管理的内存。因为这块内存通过GC自动管理,所以我们不用关心。
  • 非托管资源:像Win32编程中的文件句柄,上下文句柄、窗口或网络连接等资源都属于非托管资源。
    在库中能找到的类产生的对象,都是托管资源。

GC进行垃圾回收的时间和顺序?

  • GC进行垃圾回收的时间无法确定(当然你手动调用GC的垃圾回收方法除外),并且顺序也不能确定!也就是说,你先申请的空间有可能在你后申请的空间释放之后释放。
  • GC对于实现析构函数和没实现析构函数的类处理方法不一样,简单些说GC对于实现了析构函数的类一定会调用他们的析构函数。
  • 析构函数会隐式的转换为 Finalize函数,Object.Finalize()方法也不能被重写
    ~Test()
    {
    }
    // 会隐式的转换为,会递归调用Finalize方法
    protected override void Finalize()
    {
    	 try
    	 {
    	  // Cleanup statements...
    	 }
    	 finally
    	 {
    	  base.Finalize();
    	 }
    }
    

解决方案

到了这里,关于unity学习(垃圾回收,资源释放)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM学习之内存与垃圾回收篇1

    2000年,JDK 1.3发布,Java Hot Spot Virtual Machine正式发布,成为Java的默认虚拟机。 2006年,JDK 6发布。同年,Java开源并建立了OpenJDK。顺理成章,Hotspot虚拟机也成为了OpenJDK中的默认虚拟机。 2008年,Oracle收购了BEA,得到了JRockit虚拟机。 2010年,Oracle收购了Sun,获得了Java的商标和Ho

    2024年02月16日
    浏览(58)
  • Lua学习笔记:浅谈对垃圾回收的理解

    前言 本篇在讲什么 Lua的垃圾回收 本篇适合什么 适合 初学Lua 的小白 本篇需要什么 对 Lua 语法有简单认知 依赖 Sublime Text 编辑器 本篇的特色 具有全流程的 图文教学 重实践,轻理论,快速上手 提供全流程的 源码 内容 ★提高阅读体验★ 👉 ♣ 三级标题 👈 👉 ♦ 四级标题

    2024年02月13日
    浏览(37)
  • lua学习笔记21完结篇(lua中的垃圾回收)

    输出 学习地址  【唐老狮】Unity热更新之Lua语法_哔哩哔哩_bilibili 

    2024年04月15日
    浏览(44)
  • Unity资源管理(AssetBundle加载和卸载)及内存管理(内存的申请和释放)

    GameObject, Transform, Mesh, Texture, Material, Shader, Script和各种其他Assets。 静态引用,在脚本中加一个public GameObject变量,在Inspector面板中拖一个prefab到该变量上,然后在需要引用的地方Instantiate; Resource.Load,资源需要放在Assets/Resources目录下; AssetBundle.Load, Load之后Instantiate。 GameOb

    2024年02月16日
    浏览(35)
  • Unity 性能优化的手段(对象池、静/动态批处理、GPU实例化、垃圾回收、LOD、LightMap)【更新中】

    目录 对象池 扩容策略 收缩策略 DrawCall DrawCall的过程 为什么减少DrawCall可以实现性能优化? 减少Draw Call的方法 静态批处理(Static Batching) 动态批处理(Dynamic Batching) GPU Instancing(GPU实例化)​​​​​​​ 贴图集 垃圾回收的优化 垃圾回收的性能影响 延迟垃圾回收 避免

    2024年02月04日
    浏览(40)
  • Unity3d:GameFramework解析:实体,对象池,资源管理,获取计数,引用计数,自动释放

    1.GF万物基于引用池IReference 2.ObjectBase : IReference类的m_Target持有unity中Mono,资源,GameObejct 3.AssetObject : ObjectBase类m_Target持有Assetbundle中的Asset,具有获取,引用两个计数管理释放 4.ResourceObject : ObjectBase类m_Target持有Assetbundle,具有获取,引用两个计数管理释放 5.EntityInstanceObject :

    2024年02月11日
    浏览(28)
  • JVM——垃圾回收(垃圾回收算法+分代垃圾回收+垃圾回收器)

    只要一个对象被其他对象所引用,就要让该对象的技术加1,某个对象不再引用其,则让它计数减1。当计数变为0时就可以作为垃圾被回收。 有一个弊端叫做循环引用,两个的引用计数都是1,导致不能作为垃圾回收,会造成内存泄露。 java虚拟机没有采用该算法。 该算法需要

    2024年02月12日
    浏览(47)
  • 垃圾回收 - 分代垃圾回收

    分代垃圾回收在对象中导入了“年龄”的概念,通过优先回收容易成为垃圾的对象,提高垃圾回收的效率。 分代垃圾回收中把对象分类成几代,针对不同的代使用不同的 GC 算法,我们把刚生成的对象称为新生代对象,到达一定年龄的对象则称为老年代对象。 众所周知,新生

    2024年02月08日
    浏览(35)
  • JVM7:垃圾回收是什么?从运行时数据区看垃圾回收到底回收哪块区域?垃圾回收如何去回收?垃圾回收策略,引用计数算法及循环引用问题,可达性分析算法

    在Java中,垃圾回收(Garbage Collection,简称GC),是自动管理内存的机制。它负责检测不再使用的对象,并释放它们所占用的内存,以供其他对象使用。 JVM内存模型认识的差不多了,就应该思考,什么样的内存模型适合什么样的GC策略,包括垃圾回收为什么会出现。实际上,很多

    2024年02月11日
    浏览(35)
  • JVM的组件、自动垃圾回收的工作原理、分代垃圾回收过程、可用的垃圾回收器类型

    https://www.processon.com/diagraming/64c8aa11c07d99075d934311 https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html 年轻代是所有新对象被分配和老化的地方。当年轻代填满时,这会导致minor garbage collection,minor gc会回收掉很多的游离对象。游离的年轻代很快就被收集起来。一些幸存的

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包