У меня есть следующий класс, который создается около 40 миллионов раз, и все его экземпляры занимают около 80% всей памяти процесса (более 15 ГБ).
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 только в разработке.
EDIT:
Это служба, которая должна очень быстро возвращать результат, который зависит от всех этих данных. Очень быстро здесь около 20 мс-150 мс. Таким образом, все данные хэшируются и сортируются, и каждое поле в этом классе используется почти в каждом запросе к службе. Может быть, что-то здесь спроектировано плохо, но дизайн здесь не проблема, и я просто не могу изменить его прямо сейчас с нуля.