繁体   English   中英

创建新类或结构时.NET中的内存使用情况

Memory usage in .NET when creating a new class or struct

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

Int的大小为4个字节,如果我在程序中创建一个新的Int将使其内存消耗增加4个字节。 对?

但如果我有这门课

public class Dummy{
    private int;
}

我的新课程将使用多少内存? 如果它是一个结构,内存消耗会更低吗? 我认为引用本身也会消耗一些内存。

2 个回复

单个引用要么在32位进程上占用4个字节,要么在64位进程上占用8个字节。 引用是类的标准开销(因为它们是引用类型)。 结构不会引起参考(好吧,忽略任何潜在的拳击)并且通常是其内容的大小。 我不记得班级是否有更多的开销,不这么认为。

这个问题深入研究了类与结构(也在问题评论中提供):

在结构上使用“new”在堆或堆栈上分配它吗?

如注释中所述,只有类的实例才会消耗此引用开销,并且只有在某处有引用时才会消耗此引用开销。 当没有引用时,该项目符合GC的条件 - 我不确定在没有任何引用的情况下类的大小是什么,我认为它是其内容的大小。

实际上,课程没有你可以依赖的真正“大小”。 最重要的是,这不应该是使用类或结构的决定因素(但是你倾向于找到指导说明大约16字节或以下的类型可以是合适的结构,并且上面倾向于类)。 对我来说,决定因素是预期用途。

在谈论结构时,我觉得有必要提供以下链接: 为什么可变结构“邪恶”?

类是引用类型,位于堆(并将从garbabe收集器中删除)。 struct ist值类型并存储在堆栈中。
在您的示例的情况下,Microsoft建议使用值类型(struct),因为引用类型会导致过多的开销。

如果您对此主题感兴趣,请查看Jeffrey Richter的书“CLR via C#”。

1 分配新值时的numpy内存使用情况

我有一个数据生成类,可以批量生成数据。 简化如下: 实际的代码与上面的代码非常接近,只是self.X是在DataBatcher类内的另一种方法中生成的,并且会定期更新。 我注意到,在对self.X不做任何更改的情况下,Python的内存使用量在每一轮self.batch[:] = s ...

2 填充结构内存使用情况

我有一个带有9个字节的成员的结构。 该结构的sizeof()返回为10。我认为多余的字节是由于填充。 填充字节会被允许用于任何东西,还是编译器“保留”它? 也就是说,就程序而言,内存会永远丢失吗? 询问的原因是我的空间非常有限,所以我使用成员之一使用位操作将多个值存储在一个字节中。 ...

3 结构向量中的内存使用情况

一个相当简单的问题。 但是,我在 VS2019 中得到了令人困惑的结果。 所以,我设计了一些测试来确定发生了什么,但我不确定结果如何。 问题:向量的分配内存大约是向量预期大小的 1.5 倍。 内存配置文件表明未解决的分配大约等于我看到的额外值。 我的试炼—— 包含一个字符、一个浮点数和一个 ...

4 .NET模块的内存使用情况

我有一个silverlight应用程序并使用WCF使用实体框架与后端SQL Server进行通信。 我想知道我的应用程序的哪个部分使用的内存最多。 我可以使用哪些工具来发现内存使用情况? ...

5 测量.Net中的内存使用情况

我正在尝试获得一个我正在编写的程序(在F#中,虽然我认为这里的答案对于任何CLR语言都是一样的吗?)来报告它自己的内存使用情况(所以我可以知道我有多少我强调机器,比较不同工作负载的大小,并评估我为保存内存所做的任何优化的效果。 好消息是,类Process有很多可用的统计数据。 http: ...

6 估算.NET(VS)中的内存使用情况

我读了一篇关于字符串方法"a" + b与string.Format(“ a {1}”,b)的性能的文章,并决定进行测试。 我的代码在WinForms应用程序中(VS 2005,但对2005/2008都感兴趣)。 在我的机器上,输出如下: 123451234512345123 ...

8 单例类和内存使用情况

有关在AS3应用程序中使用Singleton类的一般问题:如果我有一个非常复杂的数据模型,并且有许多引用该模型实例的不同视图类,是否会牺牲性能? 换句话说,我希望所有视图组件都扩展一个对模型有引用的基类。 这会影响我的应用程序的性能吗? 还是因为它们只是引用单例实例的指针而已? ...

9 PHP PDO类的内存使用情况

我在这里花了一些时间,我试图在自己之后进行适当的清理(;)),并显示我的类和方法正在使用多少内存。 因此,我遇到的问题是: 似乎清理后,比上一次内存检查(返回前内存)使用的内存更多 这是课程,测试页面和结果(以及在线结果) 类: 测试页: 测试页结果 ...

10 类的PHP内存使用情况

我试图了解unset()如何与类及其属性一起使用。 我编写了一个小测试以查看内存使用情况。 我所期望的是最后一次使用的内存应该与第一次使用的内存相似。 但这要高得多: 我真的不明白这是怎么回事。 谢谢你的帮助! 注意:我试图对__destruct使用另一个名称(我们永 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM