首页 / C# / 在C#中,struct需要多少内存?
在C#中,struct需要多少内存?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在C#中,struct需要多少内存?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1538字,纯文字阅读大概需要3分钟。
内容图文
![在C#中,struct需要多少内存?](/upload/InfoBanner/zyjiaocheng/967/7de27782eba84f0aa34f165950fd4360.jpg)
我将使用大约320,000,000个数据点来获得高分辨率波形.每个数据点将需要2个浮点数(XY坐标),总共8个字节.
为了一次性分配这个内存,我计划使用如下结构:
public struct Point
{
public float X; //4-bytes
public float Y; //4-bytes.
}
由于struct是一个值类型,我假设它只消耗每个变量所需的内存量,以及CLR使用的一些小的固定量(公共语言运行时).
有没有办法可以计算结构在我的应用程序运行期间将使用多少内存?也就是说,我知道以下内容:
>结构中有多少个变量.
>每个变量使用多少字节.
>在给定的时间点,结构的多少个实例将存活.
解决方法:
Since a struct is a value type, I am assuming that it consumes only the amount of memory necessary for each variable, as well as some small, fixed amount used by the CLR (Common Language Runtime).
不.值类型没有任何继承开销.这是无法支持继承的权衡.
所以你只需支付它包含的字段的大小.
例外:
如果将结构体粘贴在Object类型的变量中,则它具有对象开销:
I talk about this in a blog post “Of memory and strings”. It’s implementation-specific, but for the Microsoft .NET CLR v4, the x86 CLR has a per-object overhead of 8 bytes, and the x64 CLR has a per-object overhead of 16 bytes.
What is the memory overhead of a .NET Object
如果将其强制转换为接口类型,则会发生同样的情况.
如果在数组中粘贴结构,则数组本身会有一些对象开销加上一个整数来存储数组的长度.但无论数组长度如何,这都是固定成本.
如果在List< struct>中粘贴结构,则有两个对象:列表和列表使用的数组.因此每个对象成本的两倍,加上从列表到数组的指针,加上一个整数来了解当前使用了多少数组.
如果在List或List< object>中粘贴结构,则会产生上述开销,加上列表中每个项目的一个指针的开销,加上列表中每个项目的每个对象开销.
内容总结
以上是互联网集市为您收集整理的在C#中,struct需要多少内存?全部内容,希望文章能够帮你解决在C#中,struct需要多少内存?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。