Memory Unity-独立构建内存不足

Memory Unity-独立构建内存不足,memory,optimization,unity3d,memory-leaks,out-of-memory,Memory,Optimization,Unity3d,Memory Leaks,Out Of Memory,所以我已经在unity论坛上问了这个问题,但这对我没有多大帮助:/。今天我决定和朋友们一起尝试我的游戏,所以基本上我创建了一个服务器,以便其他客户/朋友可以连接到它。在玩了大约20分钟后,我的游戏崩溃了,我很快检查了任务管理器,我的游戏使用了大约3.5 GB的内存!当我看日志时,它是这样说的: Unity Player [version: Unity 4.6.1f1_d1db7a1b5196] mono.dll caused an Access Violation (0xc0000005)

所以我已经在unity论坛上问了这个问题,但这对我没有多大帮助:/。今天我决定和朋友们一起尝试我的游戏,所以基本上我创建了一个服务器,以便其他客户/朋友可以连接到它。在玩了大约20分钟后,我的游戏崩溃了,我很快检查了任务管理器,我的游戏使用了大约3.5 GB的内存!当我看日志时,它是这样说的:

Unity Player [version: Unity 4.6.1f1_d1db7a1b5196]

mono.dll caused an Access Violation (0xc0000005)
  in module mono.dll at 0023:101071a1.

Error occurred at 2016-07-04_163050.
C:\Users\Cooler Master\Desktop\TL\TL.exe, run by Cooler Master.
77% memory in use.
0 MB physical memory [1814 MB free].
0 MB paging file [1039 MB free].
0 MB user address space [68 MB free].
Write to location 00000000 caused an access violation.
所以在我的游戏中有一些东西一直在吃我的公羊。当游戏运行时,每秒大约需要3MB内存。我在网上找到了一些关于Resources.UnloadUnusedAssets的信息,但我不知道如何编写这样的脚本!我知道如何用c#编写,但只知道简单的脚本,如GUI、Newtorkinf、Physics等。。另外,我从kickasstorrent下载unity pro只是为了看到分析器窗口,但这对我一点帮助都没有

非常感谢您的回复! 此外,如果您想查看游戏并了解发生了什么:


再次感谢!:)

如果看不到您的代码,就很难找到确切的问题。但我认为您应该从查找实例化/销毁新对象的代码开始。它使GC收集未使用的对象并分配新内存。很快,您的可用内存变得支离破碎,以至于没有合适的内存区域来分配新对象


我强烈建议您阅读有关Unity优化的文章

,但不要看到您的代码,很难找到确切的问题。但我认为您应该从查找实例化/销毁新对象的代码开始。它使GC收集未使用的对象并分配新内存。很快,您的可用内存变得支离破碎,以至于没有合适的内存区域来分配新对象


我强烈建议您阅读有关Unity优化的文章

这个问题将很难解决,因为要想弄清楚到底发生了什么事情,我们只有看看源代码。在代码中查找数组。类似于
myclass=newmyclass[10]在更新循环中。在
Start
功能中执行一次,然后重新使用。您正在使用许多脚本执行
myclass=new myclass()
?你正在用脚本实例化游戏对象吗?如果是这样,请停止并了解对象池。使用
foreach
循环在
List
上循环?使用
进行循环。还有许多其他可能的问题。如果没有代码,就很难提供帮助。我真的不明白你的意思:myclass=new myclass对不起,我太笨了。但我只使用unity一年,所以我还是初学者。但我发现有些人使用卸载纹理和资源的方法(已经提到),但我找不到任何脚本,我不知道如何编写这种脚本,你知道这方面的一些事情吗?我还有一个脚本,大约3500行长,我试图删除这个脚本并构建游戏,但是内存仍然在增加。我将所有纹理的大小从1024像素更改为256px,但仍然没有结果。旧版本的游戏很好用。Unity 5免费版几乎和专业版一样具有所有的功能,所以你可以免费使用profiler。添加探查器内存选项卡的一些屏幕截图(也单击“拍摄内存快照”)@MatúšPavkeje每次创建对象时,都会分配内存来保存该对象。程序员、mgear和Denis Efimov建议您仔细检查代码并检查分配内存的位置,以此作为优化过程的开始。手册中讨论了这一策略和其他策略,认为这是一个很好的开始:在确定问题所在之前,不要担心卸载GunusedAssets或卸载特定纹理。谢谢大家的建议!我会尽力解决的!也许这需要很多时间,因为我有大约100个脚本在项目中。这个问题将很难解决,因为它看起来是唯一能弄清楚发生了什么事情的方法,让我们看看源代码。在代码中查找数组。类似于
myclass=newmyclass[10]在更新循环中。在
Start
功能中执行一次,然后重新使用。您正在使用许多脚本执行
myclass=new myclass()
?你正在用脚本实例化游戏对象吗?如果是这样,请停止并了解对象池。使用
foreach
循环在
List
上循环?使用
进行循环。还有许多其他可能的问题。如果没有代码,就很难提供帮助。我真的不明白你的意思:myclass=new myclass对不起,我太笨了。但我只使用unity一年,所以我还是初学者。但我发现有些人使用卸载纹理和资源的方法(已经提到),但我找不到任何脚本,我不知道如何编写这种脚本,你知道这方面的一些事情吗?我还有一个脚本,大约3500行长,我试图删除这个脚本并构建游戏,但是内存仍然在增加。我将所有纹理的大小从1024像素更改为256px,但仍然没有结果。旧版本的游戏很好用。Unity 5免费版几乎和专业版一样具有所有的功能,所以你可以免费使用profiler。添加探查器内存选项卡的一些屏幕截图(也单击“拍摄内存快照”)@MatúšPavkeje每次创建对象时,都会分配内存来保存该对象。程序员、mgear和Denis Efimov建议您仔细检查代码并检查分配内存的位置,以此作为优化过程的开始。手册中讨论了这一策略和其他策略,认为这是一个很好的开始:在确定问题所在之前,不要担心卸载GunusedAssets或卸载特定纹理。谢谢大家的建议!我会尽力解决的!也许这需要很多时间,因为我在项目中有大约100个脚本