UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误

提问

UE5报错如图。解析原因
UE5报错如图。解析原因

回答

你遇到的这个错误提示是:

“Out of video memory trying to allocate a rendering resource. Make sure your video card has the minimum required memory, try lowering the resolution and/or closing other applications that are running. Exiting…”

这是 Unreal Engine 5 中非常常见的一个显存不足错误。下面是详细解析和解决建议:


🎯 错误原因解析

该错误表示 你的GPU显存已经耗尽,无法再为新的渲染资源分配空间。在UE5中,由于使用了NaniteLumen等高端渲染技术,显存消耗非常大,常见的原因包括:

🔍 常见触发原因

  1. 场景中有大量高面数模型(尤其是开启Nanite时)。
  2. 使用了高分辨率纹理(如4K、8K贴图,或者多个材质重叠)。
  3. 实时光照 + Lumen GI同时开启。
  4. Editor运行时加载了太多资源(如多个Level、海量Instance)。
  5. GPU显存较小(< 6GB尤其容易出错)。
  6. 显卡驱动版本过旧或不兼容UE5

🛠️ 解决方案

✅ 推荐优先检查以下几项:

1. 关闭其他占用显卡资源的程序
  • 如Chrome、视频播放器、OBS、Photoshop等。
  • 任务管理器 > 性能 > GPU中查看显存使用情况。
2. 降低项目中资源的开销
  • 检查并禁用部分Lumen设置(尤其是反射和GI)。
  • 光照烘焙为静态,减少实时渲染压力。
  • 替换高分辨率纹理为2K或以下的版本。
  • 尽量避免场景中有大量高面数模型同时显示。
  • 只加载当前需要的Level(使用World Partition的流式加载功能)。
3. 显卡驱动更新
  • 前往NVIDIA或AMD官网下载安装最新驱动。
4. 使用控制台命令限制显存使用

可以在命令行中尝试:

r.Streaming.PoolSize=1500

(数值1500表示显存池大小为1500MB,可以根据你GPU显存适当调大或调小)

5. 降低编辑器设置(Editor Preferences)
  • Engine Scalability Settings 中把设置改为 Low 或 Medium
  • 关闭Real-time 视图(在Viewport左上角下拉菜单中)。

🧪 临时解决方案:命令行启动参数(减少显存需求)

在启动项目时添加以下参数可以减少加载:

-projectfiles -nosplash -nocachedprovider -NoVerifyGC

🧠 建议升级硬件情况(如频繁出现此问题)

项目建议最低配置
GPUNVIDIA RTX 3060 或更高(至少 12GB 显存)
RAM32GB 内存
VRAM8GB 显存或更高(最好12GB+)

如果你方便的话,可以告诉我:

  • 使用的显卡型号?
  • 当前项目的内容复杂度(是否启用Nanite/Lumen,模型数量等)?
  • 是否是运行编辑器时报错,还是打包/运行游戏时报错?

我可以根据你的具体情况再给出优化建议。

继续提问

我是和simulink联合仿真的。为什么我在play期间很长时间都不会出现这个问题,但是只要在结束Play以后(即便play时间很短),结束以后不久就必定报这个错误?好像和结束这个操作是有关系的。为什么不结束就不出现显存不足,一旦结束过个一分钟大概就必定报显存不足?

回答

你这个现象非常关键,说明:

显存不足并不是在Play过程中发生的,而是“退出Play”之后显存释放不当/异常累积导致的。

这是一个在 Unreal Engine 与外部系统(如Simulink、ROS、MATLAB等)联合仿真中常见的 资源管理或内存泄露问题


🎯 问题核心分析

你提到的行为描述非常具体,我们逐条分析:

✅ 现象回顾

  • Play期间不报错(即使时间较长)。
  • 结束Play后不久(大约一分钟)100%出现“Out of Video Memory”
  • 每次只要运行并退出Play,就必定触发,和Play时长无关。
  • 和你使用Simulink联合仿真有关。

🔎 可能的根本原因

🧠 1. Simulink插件或通信模块未正确释放GPU资源

  • 如果你使用Simulink通过某种接口(如UDP、ROS、共享内存或自定义C++插件)与UE5通信:

    • Play期间会分配资源用于数据收发、图形渲染、纹理映射等;
    • 退出Play时UE5尝试释放这些资源,但可能因为插件没有实现正确的析构或清理逻辑,导致资源悬挂在GPU侧
    • 然后过几十秒,垃圾回收触发或资源使用继续增加 → 显存爆掉。

🎯 所以Play期间反而不会立即爆,因为资源是被使用中的;一旦“释放”出问题,才会出错。


🧠 2. Actor或组件在退出Play后未被正确销毁

  • UE5中的某些Actor、Component(比如自定义用于显示Simulink数据的Mesh或Texture):

    • EndPlay时应被销毁。
    • 如果有Tick、RenderTarget或MaterialInstance仍在后台运行,它们会持续使用显存

🧠 3. Render Target / Material / Texture 没被手动释放

  • 比如你用来显示Simulink数据的动态纹理(UTextureRenderTarget2DUpdateResource()等):

    • 如果没有调用 ReleaseResource(),或未设置 MarkPendingKill(),它们不会被清除。
    • 退出Play后,这些未释放的资源依然占用GPU显存。

🧠 4. 循环定时器或线程未被Kill

  • 有些插件或Blueprint可能在Play模式中注册了Timer、线程或Event Dispatcher。
  • 如果这些没有被正确ClearTimer(),会在退出Play后后台继续运行,引发延迟性资源堆积。

✅ 针对性解决建议

✔ 检查Event EndPlay

确保你在Actor、Component等蓝图中实现了 Event EndPlay,清理所有动态资源:

Event EndPlay
→ Clear Timer by Handle
→ Release Texture Resources
→ Destroy Components
→ Set References to None

✔ 如果使用 C++ 插件:

检查你的 BeginPlay() / EndPlay() 生命周期中是否有类似下面的管理:

MyTexture->ConditionalBeginDestroy();
MyRenderTarget->ReleaseResource();
MyComponent->DestroyComponent();

并且在 Tick() 和通信回调中加逻辑:判断是否在编辑器模式下还在运行。


✔ 调试建议:使用UE内置显存分析工具

打开以下命令窗口(Editor中按 ~ 进入控制台):

stat RHI
stat GPU

退出Play后观察显存是否逐渐增加?是否某个资源未销毁?

还可以使用:

rhi.DumpMemory

输出当前内存占用状态,查找泄露点。


✔ Editor设置修改

为了避免UE5自动保留资源,你可以尝试:

  • Project Settings > Garbage Collection 中设置更短的回收时间;
  • 启用 gc.DumpPoolStats 查看资源池占用情况。

🔧 如果你方便透露更多信息,我可以更具体帮助你排查:

  • 使用的Simulink接口(是否自定义插件?基于ROS还是UDP?)?
  • Play模式是否会使用RenderTarget / 动态材质?
  • 是否在Play模式中有Blueprint或C++不断创建纹理或Mesh?
  • 是否能复现该现象于空项目中?

✅ 临时规避方法

如果你短期内需要绕开这个问题:

  • 尽量避免多次Play → Stop,改为使用 Simulate 模式
  • 或者重启Editor以强制释放显存;
  • 设置 r.Streaming.PoolSize=512 限制最大显存池,避免暴涨。

如果你能提供你的资源创建 / Simulink接口逻辑的相关截图(Blueprint或代码),我可以帮你查找是否有遗漏的释放逻辑。这个问题虽然表面是显存,但本质是资源未释放或泄露。我们可以一步步定位!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/83941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七十三篇 从电影院售票到停车场计数:生活场景解析Java原子类精髓

目录 一、原子类基础&#xff1a;电影院售票系统1.1 传统售票的并发问题1.2 原子类解决方案 二、原子类家族&#xff1a;超市收银系统2.1 基础类型原子类2.2 数组类型原子类 三、CAS机制深度解析&#xff1a;停车场管理系统3.1 CAS工作原理3.2 车位计数器实现 四、高性能实践&a…

Linux(线程控制)

一 线程的操作 1. 创建线程&#xff1a;pthread_create int pthread_create(pthread_t *thread, // 线程 idconst pthread_attr_t *attr, // 线程属性设置void *(*start_routine) (void *), // 回调函数void *arg // 传递…

PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式

PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式 文章目录 PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式1. 查询效果2. 处理方式3. 再次查询 1. 查询效果 2. 处理方式 3. 再次查询

centos 9/ubuntu 一次性的定时关机

方法一 # 15 表示15分钟以后自动关机 sudo shutdown -h 15方法二&#xff1a; sudo dnf install at -y # 晚上十点半关机 echo "shutdown -h now" | at 22:30 # 检查是否设置成功命令 atq [rootdemo-192 ~]# atq 1 Wed Jun 4 11:12:00 2025 a root # 取消定时计划…

Riverpod与GetX的优缺点对比

Riverpod 与 GetX 的优缺点对比 在 Flutter 开发领域,Riverpod 和 GetX 都是备受关注的状态管理与依赖注入框架,它们各有优劣,适用于不同的开发场景。以下从多个维度详细对比二者的优缺点。 一、Riverpod 的优缺点 (一)优点 架构清晰,数据流向明确:基于 Provider 模…

day 47

注意力可视化 训练模型 包含通道注意力模块和CNN模型的定义&#xff08;通道注意力的插入&#xff09; import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import ma…

《Vuejs设计与实现》第 8 章(挂载与更新)

目录 8.1 挂载子节点与属性 8.2 HTML Attributes 与 DOM Properties 8.3 设置元素属性的正确方式 8.4 处理 class 属性 8.5 卸载操作 8.6 区分 vnode 类型 8.7 事件处理优化 8.8 事件冒泡与更新时机问题 8.9 子节点的更新 8.10 文本节点和注释节点 8.11 片段&#xf…

自制操作系统(五、重写引导部分和C语言的使用)

为了实现其他更多功能&#xff0c;我决定重新写引导部分的内容 boot.asm ; boot.asm %include "config.inc"setuplen equ 4 bootseg equ 0x07c0 initseg equ def_initseg setupseg equ def_setupseg sysseg equ def_syssegsetupsector equ 2 syssector equ setupse…

口罩佩戴检测算法AI智能分析网关V4工厂/工业等多场景守护公共卫生安全

一、引言​ 在公共卫生安全日益受到重视的当下&#xff0c;口罩佩戴成为预防病毒传播、保障人员健康的重要措施。为了高效、精准地实现对人员口罩佩戴情况的监测&#xff0c;AI智能分析网关V4口罩检测方案应运而生。该方案依托先进的人工智能技术与强大的硬件性能&#xff0c;…

【评测】用Flux的图片文本修改的PS效果

【评测】Flux的图片文本修改的PS效果 1. 百度图库找一张有英文的图片 2. 打开https://playground.bfl.ai/image/edit上传图片 3. 输入提示词 “change brarfant to goodbeer” 图片的文字被修改了

【汇编逆向系列】三、函数调用包含单个参数之float类型-xmm0寄存器,sub,rep,stos,movss,mulss,addss指令

一、汇编代码 single_float_param:0000000000000060: F3 0F 11 44 24 08 movss dword ptr [rsp8],xmm00000000000000066: 57 push rdi0000000000000067: 48 83 EC 10 sub rsp,10h000000000000006B: 48 8B FC mov …

深入了解UDP套接字:构建高效网络通信

个人主页&#xff1a;chian-ocean 文章专栏-NET 深入了解UDP套接字&#xff1a;构建高效网络通信 个人主页&#xff1a;chian-ocean文章专栏-NET 前言&#xff1a;UDPUDP 特点&#xff1a;UDP的应用 套接字地址IP地址&#xff08;Internet Protocol Address&#xff09;IP地址…

C++课设:实现简易文件加密工具(凯撒密码、异或加密、Base64编码)

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《编程项目实战》 目录 一、初识文件加密&#xff1a;为什么需要…

Qt/C++学习系列之Excel使用记录

Qt/C学习系列之Excel使用记录 前言The process was ended forcefully.解决方式断点查语句问题 总结 前言 在项目中解析条目达50多条&#xff0c;并且都需要将对应的结果进行显示。为了将结果显示的更加清晰&#xff0c;考虑采用QTableWidget进行表格设置&#xff0c;而在使用过…

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…

并发编程实战(生产者消费者模型)

在并发编程中使用生产者和消费者模式能够解决绝大多数的并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。 生产者和消费者模式&#xff1a; 在线程的世界中生产者就是产生数据的线程&#xff0c;而消费者则是消费数据的线程。在多线程开…

力扣hot100---152.乘积最大子数组

给你一个整数数组 nums &#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff08;该子数组中至少包含一个数字&#xff09;&#xff0c;并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 示例 1: 输入: nums [2,3,-2,4] 输出:6解释: 子数组 [2,3] 有最…

什么是DevOps智能平台的核心功能?

在数字化转型的浪潮中&#xff0c;DevOps智能平台已成为企业提升研发效能、加速产品迭代的核心工具。然而&#xff0c;许多人对“DevOps智能平台”的理解仍停留在“自动化工具链”的表层概念。今天&#xff0c;我们从一个真实场景切入&#xff1a;假设你是某互联网公司的技术负…

柯尼卡美能达Konica Minolta bizhub 205i打印机信息

基本参数 产品类型&#xff1a;激光数码复合机颜色类型&#xff1a;黑白涵盖功能&#xff1a;复印、打印、扫描最大原稿尺寸&#xff1a;A3内存容量&#xff1a;256MB供纸容量&#xff1a;标配 350 页&#xff0c;最大 1350 页介质重量&#xff1a;标准纸盒 64-157g/㎡&#xf…

虚拟机与宿主机应用通信配置指南

1. 选择虚拟机网络模式 桥接模式 (Bridged) 客户机获得独立局域网IP&#xff0c;与宿主机同网段。 客户机可直接访问宿主机IP&#xff08;如 192.168.1.x&#xff09;。 Host-Only 模式 仅宿主机与客户机之间通信&#xff0c;宿主机通常有一个虚拟网卡&#xff08;如 192.16…