草庐IT

unity-内存GC

全部标签

c# - ValueTypes 会导致 GC 吗?

如果我有堆栈分配的值类型,如何清理它们?GC只是堆对吗? 最佳答案 如果值在堆栈上,那么当当前堆栈帧被“弹出”(通过返回的方法)时,值被有效地清理...不会有任何终结器调用或类似的东西,但是下次堆栈达到那么高时,这些值使用的内存将被重新使用。请注意,值类型并不总是分配在堆栈上。特别是,它们通常作为其他对象的一部分进行分配(例如,具有int成员的类)或者它们可以装箱。 关于c#-ValueTypes会导致GC吗?,我们在StackOverflow上找到一个类似的问题:

c# - 如何用零删除 StringBuilder 内存

我在StringBuilder对象中存储了一个密码。我正在寻找一种方法来删除内存中的密码。以下任何一种方法都可以实现这一点:遍历StringBuilder字符并分配'\0'。是如果我已经分配,​​这保证使用相同的内存最初有足够的内存吗?我可以使用任何非托管API,例如ZeroMemory()或SecureZeroMemory()使用StringBuilder?有代码示例吗?编辑:使用SecureString不是我的选择,因为我正在调用CredUIPromptForCredentials()来获取凭据。 最佳答案 简单的答案是,您提出

c# - 使用插值 vs "+"运算符连接字符串的内存使用情况

我看到了使用内插字符串在可读性方面的好处:stringmyString=$"Hello{person.FirstName}{person.LastName}!"通过这种方式完成的串联:stringmyString="Hello"+person.FirstName+""person.LastName+"!";作者thisvideotutorial声称第一个可以更好地利用内存。怎么会? 最佳答案 作者实际上并没有说一个比另一个更好地利用内存。它在抽象中说,一种方法“充分利用了内存”,这本身并没有什么实际意义。但是不管他们怎么说,这两种方

c# - 如何在 C# 中获取内存中 Image 类实例的 mime 类型?

在我正在为工作中的一些基础设施项目编写的库中,我有一种方法可以创建各种比例的图像(用于缩略图等...)。但是,出于各种原因,我存储此数据的系统需要在数据库中声明一个mime类型。有没有办法从传入的c#Image类中获取Mime类型,或者我必须让外部应用程序将Mimetype与图像一起传入? 最佳答案 您可以获得ImageFormat从Image,您可以从ImageCodecInfo中获取MIME类型.您需要做的就是将两者结合在一起:ImageFormatformat=yourImage.RawFormat;ImageCodecInf

c# - 类中声明的变量的内存分配

因为Value类型变量在堆栈中分配内存,而Reference类型在堆中分配它。那么在引用类型(例如类)中声明值类型变量(例如inti=4;)时,内存是如何分配的。.NET中值类型和引用类型以及引用类型范围内的值类型的整体内存分配是如何工作的。请对其进行解释或提供任何相关链接。 最佳答案 Avaluetypevariableallocatesmemoryonthestackwhereasareferencetypeallocatesitinheap.不,这种说法是完全错误的。很多人相信这一点,但正如您所发现的,这显然是错误的。Howi

c# - ASP.Net MVC 4 Web API Controller 不适用于 Unity.WebApi

我的ASP.NetMVC4WebAPIController不支持Unity.WebApi。在同一个项目中,简单的Controller可以正确地与Unity.Mvc3配合使用。但是当我运行从ApiController派生的WebAPIController时,我收到一条消息:{"$id":"1","Message":"Anerrorhasoccurred.","ExceptionMessage":"Type'ElectricTests.Controllers.Api.DocumentsController'doesnothaveadefaultconstructor","Exception

c# - 在 Unity.MVC4 或 Unity(3.0) 中找不到 PerRequestLifetimeManager 类

我正在尝试定位PerRequestLifetimeManager。在MSDN中,itsaysthatitispartoftheUnity3assembly.我已经通过Nuget安装了Unity.Mvc4。package.config说我正在使用Unity3.0:Microsoft.Practices.Unity.dll说我正在使用Unity3.0我使用对象浏览器查看了DLL,找不到PerRequestLifetimeManager。我是不是漏掉了什么?如果有人会建议替代类,我打算使用自定义的PerRequestLifetimeManager找到here(如果我找不到类(class))。

c# - 使用 Unity 注入(inject)数组

我的目标是构造函数注入(inject)一组实现接口(interface)的对象。以下是我目前的方式。Container.RegisterInstance(ParseCompany(args[1]).RegisterInstance(ParseTargets(args[2])).RegisterInstance(newILoader[]{Container.Resolve(),Container.Resolve以这种方式在容器配置中调用Resolve是典型的还是有更标准的方式来完成同样的事情? 最佳答案 Unity天生就理解数组,因此

c# - 我可以像在 Autofac 中那样在 Unity 中的模块中注册我的类型吗?

我对Autofac相当熟悉,我非常喜欢Autofac的一项功能是模块注册。有谁知道我如何使用Unity做到这一点?我很难找到在Google中使用哪些术语来得出统一等价物(如果有的话)。publicclassGlobal:HttpApplication,IContainerProviderAccessor{privatestaticIContainerProvider_containerProvider;protectedvoidApplication_Start(objectsender,EventArgse){varbuilder=newContainerBuilder();buil

c# - 解决C#内存泄漏的方法有哪些

我正在学习C#。据我所知,您必须正确设置才能让垃圾收集器真正删除应有的所有内容。我正在寻找多年来从你那里学到的智慧,聪明人。我有C++背景,非常习惯代码味道和开发模式。我想了解C#中的代码味道是什么样的。给我建议!删除内容的最佳方法是什么?你怎么知道什么时候有“内存泄漏”?编辑:我正在尝试开发一个“内存管理要始终做的事情”的list非常感谢。 最佳答案 C#,.NETFramework使用托管内存,所有内容(但分配的​​非托管资源)都被垃圾收集。可以安全地假设托管类型总是被垃圾收集。这包括数组、类和结构。随意执行int[]stuff