草庐IT

unity-内存GC

全部标签

c# - IDisposable GC.SuppressFinalize(this) 位置

我为我的代码使用默认的IDisposable实现模板(模式)。片段:publicvoidDispose(){Dispose(true);GC.SuppressFinalize(this);}protectedvirtualvoidDispose(boolisDisposing){if(!this.disposed){if(isDisposing){//cleanupmanagedresources}//cleanupunmanagedresourcesthis.disposed=true;}}我的问题:为什么在Dispose公共(public)方法中调用“GC.SuppressFina

c# - 如何获取 C# 中的总物理内存?

我正在使用GlobalMemoryStatusEx函数来检索有关内存的信息,但该函数无法正常工作。它为所有属性返回0。我认为此功能不适用于我的Windows7环境。[StructLayout(LayoutKind.Sequential)]internalstructMEMORYSTATUSEX{internaluintdwLength;internaluintdwMemoryLoad;internalulongullTotalPhys;internalulongullAvailPhys;internalulongullTotalPageFile;internalulongullAvai

c# - Unity C# JsonUtility 没有序列化列表

我有一些数据需要序列化/反序列化,但JsonUtility只是没有做它应该做的事情。这是我正在使用的对象:publicclassSpriteData{publicstringsprite_name;publicVector2sprite_size;publicListsubimage;}publicclassSpriteDataCollection{publicSpriteData[]sprites;}如果我创建一个SpriteDataCollection,并尝试使用JsonUtility对其进行序列化,我只会得到一个空对象{}。这是它的构建方式:SpriteDatadata=newS

c# - 是否有像文件流一样阻塞的内存流

我使用的库要求我提供一个实现此接口(interface)的对象:publicinterfaceIConsole{TextWriterStandardInput{get;}TextReaderStandardOutput{get;}TextReaderStandardError{get;}}对象的读者然后被库使用:IConsoleconsole=newMyConsole();intreadBytes=console.StandardOutput.Read(buffer,0,buffer.Length);通常,实现IConsole的类具有来自外部进程的StandardOutput流。在这种

c# - this.Dispose() 在关闭后不会释放 Form 使用的内存。

我有一个Windows窗体应用程序,在该应用程序中单击某些按钮可以从第二窗体创建对象。在用户关闭此第二个表单时,此表单使用的内存不会被释放(根据任务管理器)。我尝试在退出按钮上使用this.dispose(),在主代码中使用this.close(),form2=null,并尝试在处理之前通过代码清除此表单中的所有控件。这些都不起作用,每次用户单击按钮时,应用程序的内存使用量都会增加,并且不会释放前一个实例使用的内存。我应该用什么来解决这个问题? 最佳答案 调用Dispose不会清除对象使用的内存。Dispose旨在用于运行用户定义的

c# - 如何在非托管内存中实例化 C# 类? (可能的?)

更新:现在有一个“有效”的公认答案。您永远、永远、永远、永远都不应该使用它。曾经。首先让我声明我是一名游戏开发者,以此作为我的问题的序言。有一个合法的-如果非常不寻常-与性能相关的原因想要这样做。假设我有一个这样的C#类:classFoo{publicinta,b,c;publicvoidMyMethod(intd){a=d;b=d;c=a+b;}}没什么好看的。请注意,它是一种仅包含值类型的引用类型。在托管代码中我想要这样的东西:Foofoo;foo=Voodoo.NewInUnmanagedMemory();//NewInUnmanagedMemory函数会是什么样子?如果不能在C

c# - ListCollectionView 是否泄漏内存?

我一直在研究如何避免因View模型中对INotifyCollectionChanged事件的强引用而导致的内存泄漏。我正在尝试使用ListCollectionView看看它是否适合我。我认为以下是内存泄漏,我做错了吗?varstuff=newObservableCollection();while(true){varresult=newListCollectionView(stuff);//JusttokeepmakesurethatthememoryI'mseeing//isn'twaitingtobeGC'dGC.Collect();} 最佳答案

c# - Unity中Image的onClick事件

是否可以在Unity中为图像(Canvas的一个组件)添加“onClick”功能?varobj=newGameObject();ImageNewImage=obj.AddComponent();NewImage.sprite=Resources.Load(a+"/"+obj.name)asSprite;obj.SetActive(true);obj.AddComponent();如何为“onClick”事件添加Action? 最佳答案 假设ClickAction是您的脚本,您可以通过以下方式实现OnClick功能:usingUnit

c# - 在 Unity 中使用资源文件夹

我正在开发一个需要引用.txt文件的HoloLens项目。我将文件存储在Unity的“Resources”文件夹中,并让它们正常工作(通过Unity运行时):stringbasePath=Application.dataPath;stringmetadataPath=String.Format(@"\Resources\...\metadata.txt",list);//Ifmetadataexists,settitleandintroductionstrings.if(File.Exists(basePath+metadataPath)){using(StreamReadersr=n

c# - StringBuilder 是否比 String 连接使用更多的内存?

我知道在C#中使用StringBuilder有明显的性能优势,但内存差异是什么?StringBuilder是否使用更多内存?附带说明一下,stringbuilder本质上有哪些不同之处使其速度如此之快? 最佳答案 简短回答:StringBuilder适用于连接任意数量的字符串的情况,而这些字符串在编译时是未知的。如果您确实知道在编译时要组合哪些字符串,StringBuilder基本上毫无意义,因为您不需要它的动态调整大小功能。示例1:您想组合“猫”、“狗”和“老鼠”。这正好是11个字符。您可以简单地分配一个长度为11的char[]数