关于“A Native Collection has not been disposed, resulting in a memory leak. Enabl”问题

这篇具有很好参考价值的文章主要介绍了关于“A Native Collection has not been disposed, resulting in a memory leak. Enabl”问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

提示:这里简述项目相关背景:

例如:当在进行UnityWebRequest请求数据时候,打印就报错显示“A Native Collection has not been disposed, resulting in a memory leak. Enabl”,但不能定位错误的地方在哪,于是百度也没有明确答案,然后摸索一番,后面是老大告诉我的,记录一下;


问题描述

提示:这里描述项目中遇到的问题:

例如:数据请求提交过程中,UnityWebRequest 不时出现数据没有释放的情况,偶尔会一部分数据
内存溢出情况:

IEnumerator Post(string url, string data, Action<string, bool> callback)
{
        UnityWebRequest post = UnityWebRequest.Post(url, "POST");
        if (!string.IsNullOrEmpty(data))
        {
            post.uploadHandler = (UploadHandler)new UploadHandlerRaw(Encoding.UTF8.GetBytes(data));
        }
        post.SetRequestHeader("Content-Type", "application/json");//根据个API需求定义请求头
        yield return post.SendWebRequest();
        if (post.result == UnityWebRequest.Result.Success)
        {
            callback?.Invoke(post.downloadHandler.text, true);

        }
        else
        {
            callback?.Invoke(post.error, false);
            Debug.LogError($"{post.error}:{transform}");
        }
}

原因分析:

提示:这里填写问题的分析:

这个通常都是直接使用了Nativearray过时没有释放就会报这个错
使用NativeArray的时候最好前面加 Using,或者结束时显示释放

Using(){
.....
}

显式释放


解决方案:

提示:这里填写该问题的具体解决方案:

在代码块前面加上using

IEnumerator Post(string url, string data, Action<string, bool> callback)
{
        using UnityWebRequest post = UnityWebRequest.Post(url, "POST");
        if (!string.IsNullOrEmpty(data))
        {
            post.uploadHandler = (UploadHandler)new UploadHandlerRaw(Encoding.UTF8.GetBytes(data));
        }
        post.SetRequestHeader("Content-Type", "application/json");//根据个API需求定义请求头
        yield return post.SendWebRequest();
        if (post.result == UnityWebRequest.Result.Success)
        {
            callback?.Invoke(post.downloadHandler.text, true);

        }
        else
        {
            callback?.Invoke(post.error, false);
            Debug.LogError($"{post.error}:{transform}");
        }
}

这样貌似就没有显示过了,除了这请求地方,其他地方还需要注意一下,目前只发现这个地方会有类似情况,有什么错误的,还希望各位大佬指出一下。文章来源地址https://www.toymoban.com/news/detail-525174.html

到了这里,关于关于“A Native Collection has not been disposed, resulting in a memory leak. Enabl”问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • LateInitializationError: Field ‘data‘ has not been initialized.

    问题描述: LateInitializationError: Field \\\'data\\\' has not been initialized. 后期初始化错误:字段“数据”尚未初始化。  解决办法: 给data定义为空即可。 源代码: 修改后的代码: 参考链接:[Solved] LateInitializationError: Field has not been initialized 感谢群里的大佬提供的帮助!

    2024年02月13日
    浏览(26)
  • lateinit property has not been initialized加载失败Android

    本来我是想在onCreate之外使用swipeRefresh全局变量的,后面在调试的时候就出现了上述问题。 重新看一了一遍,发现是用错语法了,lateinit是用在var修饰变量的,对val变量应该使用by lazy,所以对于控件类的变量应该使用by lazy并且是不可变的,下面这张图就是错误用法了: 正确

    2024年02月16日
    浏览(32)
  • ERROR: your rosdep installation has not been initialized yet

    这个错误表示你的 rosdep 还没有初始化。rosdep 是一个 ROS 中的系统依赖管理工具,用于安装和配置需要的系统依赖包。在使用 rosdep 之前,需要先通过  rosdep update  命令初始化它。这个命令会连接远程服务器来更新 rosdep 的数据源,以获取所有支持的 ROS 版本和平台的依赖信息。所

    2024年02月09日
    浏览(32)
  • 小程序报错:Page “pages/index/index“ has not been registered yet

    提示:这里简述项目相关背景: 例如:项目场景:通过复制粘贴小程序页面时,微信开发者工具展示页面没有显示。 提示:这里描述项目中遇到的问题: 例如:在VSCode中复制粘贴Page里面的内容,撤回后小程序的内容没有展示。: 提示:这里填写问题的分析: 例如:暂时看

    2024年02月12日
    浏览(26)
  • 解决DeprecationWarning: executable_path has been deprecated, please pass in a Service object

    检查chromedriver版本是否与Chrome一致(是的,就这么简单…) 看了很多方法,说是Selenium版本变了,需要用Service,复制下来还是一样的错误,试了好久都不行,最后瞎猫碰上死耗子,是Chrome自动更新导致chromedriver不可用了… 附上下载地址: https://registry.npmmirror.com/binary.html?pa

    2024年02月11日
    浏览(35)
  • 报错: DeprecationWarning: executable_path has been deprecated, please pass in a Service object

    在使用selenium的时候运行如下代码的时候报出错误 :DeprecationWarning: executable_path has been deprecated, please pass in a Service object 刚开始觉得是火狐浏览器和驱动的问题,查阅资料之后发现是代码的问题 将代码改为如下之后能打开浏览器

    2024年02月14日
    浏览(29)
  • [ECharts] DEPRECATED: ‘normal‘ hierarchy in itemStyle has been removed since 4.0. All style properti

    一、报错情况: 二、原因: 三、解决: DEPRECATED: ‘normal’ hierarchy in itemStyle has been removed since 4.0. DEPRECATED: ‘textStyle’ hierarchy in itemStyle has been removed since 4.0. There is a chart instance already initialized on the dom. 解决= 1、查看是否有 重名 的(不要出现) 2、

    2024年02月12日
    浏览(21)
  • DeprecationWarning: executable_path has been deprecated, please pass in a Service object driver =

    解决warning: DeprecationWarning: executable_path has been deprecated, please pass in a Service object driver = webdriver.Edge(\\\'C:/Users/cong/AppData/Local/Programs/Python/Python310/msedgedriver.exe\\\',options=option) 这个警告信息是在使用Python的Selenium库时出现的。它提示说“executable_path”已经被弃用了,建议使用一个Serv

    2024年02月11日
    浏览(28)
  • 【Error】DeprecationWarning: executable_path has been deprecated, please pass in a Service object

    解决warning: DeprecationWarning: executable_path has been deprecated, please pass in a Service object driver = webdriver.Edge(\\\'C:/Users/cong/AppData/Local/Programs/Python/Python310/msedgedriver.exe\\\',options=option) 这个警告信息是在使用Python的Selenium库时出现的。它提示说“executable_path”已经被弃用了,建议使用一个Serv

    2024年02月06日
    浏览(34)
  • 微信小程序中Page “pages/xxx/index“ has not been registered yet.方法

    今天在开发小程序时突然遇到如上问题,查了很多博客的相关问题,但是就是没有解决。 后面弄了很久之后,思考看见的一些博客有说是因为页面有JS错误,但是我的XXX页面并没有开始写逻辑。所以的我的猜测是我其他页面的JS错误引起的。 所以我的解决办法是在app.json中将

    2024年02月11日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包