【发布时间】:2010-07-19 14:26:50
【问题描述】:
我有下一个类,它实例化了大约 4000 万次,它的所有实例占用了大约 80% 的所有进程内存(超过 15GB)。
class MyClass
{
String Field1
String Field2
String Field3
int Field4
int Field5
float Field6
SomeEnum Field7
Boolean Field8
Boolean Field9
Boolean Field10
Byte Field11
Byte Field12
}
我想以某种方式优化这个类,但不确定在这种情况下我能做什么。我曾考虑将布尔字段组合为单个字节或自定义字段对齐方式,但不确定它是否更糟以及它是否不会破坏某些东西。也尝试将其更改为结构,但在现有代码中出现性能问题而没有显着改进。
那么,这里可以做些什么来减少内存使用而不严重降低性能?
此代码将主要在 x64 服务器上运行,x32 仅在开发中。
编辑:
这个服务应该非常快地返回一个取决于所有这些数据的结果。这里非常快大约是 20ms-150ms。因此,所有数据都经过哈希和排序,并且几乎在对服务的每个请求中都使用了此类中的每个字段。可能这里设计的不好,但设计在这里不是问题,我现在无法从头开始重新设计。
【问题讨论】:
-
你真的需要在内存中保存 4000 万个项目吗?为什么不只保留数据库并使用 sql 来处理它们?
-
已经在数据库之后了:)
-
4000 万条你在数据库里做不到的记录你在做什么?
-
听起来有人需要学习如何使用流。
标签: .net optimization memory