Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ограничить объем данных в памяти. / 15 сообщений из 15, страница 1 из 1
04.02.2016, 15:57
    #39163105
Serge163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Есть очередь
Код: c#
1.
private ConcurrentQueue<Goods> myQueue = new ConcurrentQueue<Goods>();


Есть класс товара
Код: c#
1.
2.
3.
4.
5.
public class Goods
    {
        public String Name { set; get; }
        public int Cena { set; get; }
    }


Очередь заполняется товаром. Необходимо установить ограничение на объем памяти, которую может занять очередь.

Например, установили лимит 1 Мбайт, заполняем очередь, получаем сообщение о превышении, принимаем решение, что делать далее.

Есть вариант рассчитать размер товара и т.д. и считать, сколько товара допустимо поместить в очередь, но хотелось бы найти решение по описанному выше примеру.

Прошу помощи, советов.
...
Рейтинг: 0 / 0
04.02.2016, 15:59
    #39163108
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Serge163,
Используйте для начала не класс, а структуру для Goods.
...
Рейтинг: 0 / 0
04.02.2016, 16:52
    #39163192
Serge163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Axeleron,
Спасибо, этот вариант уже рассматривается.
Пока важно не сэкономить объем, а ограничить.
...
Рейтинг: 0 / 0
04.02.2016, 16:55
    #39163197
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Serge163Axeleron,
Спасибо, этот вариант уже рассматривается.
Пока важно не сэкономить объем, а ограничить.
Странная задача. А чем не устраивает ограничить количество элементов в коллекции/очереди?
...
Рейтинг: 0 / 0
04.02.2016, 17:10
    #39163212
Serge163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Axeleron,
По условию известно количество доступной памяти.
Если посчитать руками объем товара, затем соответственно его количество, то при изменении структуры товара придется делать новый пересчет.
Этот вариант не отбрасываю, пока ищу способ ограничить. Важно не сколько товара, важно не превысить лимит.
...
Рейтинг: 0 / 0
04.02.2016, 17:19
    #39163219
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
...
Рейтинг: 0 / 0
04.02.2016, 17:20
    #39163220
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Serge163По условию известно количество доступной памяти.
По какому условию? Кто и на каком основании такое условие придумал?
...
Рейтинг: 0 / 0
04.02.2016, 17:40
    #39163234
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
в string влезет 2Гб , т.е. достаточно 1-го элемента в вашей очереди
...
Рейтинг: 0 / 0
04.02.2016, 17:52
    #39163241
Serge163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
buser,
Спасибо, почитаю.

Axeleron,
Извините, но не хотелось бы отклоняться от главного. Тут либо найти решение, либо дать обоснованный вариант. Обоснованный вариант уже есть, просто я не уверен, что нет решения. К стати ваши доводы мне были бы тоже весьма интересны.

Konst_One,
Согласен string здесь совсем не уместен, давайте считать, что я заменил его на char.
...
Рейтинг: 0 / 0
04.02.2016, 18:58
    #39163292
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Serge163,

В вашем варианте например найм может быть одним обьектом и иметь много реферций из обэктов очереди.
Таким образом придётся считать все обьекты очереди как графа обэктов. В принципе - можно.
Если задачу упростит, принять хто обьекты охереди не имеют общих элементов, проще ввести вирт. метод для инстанса очереди, который указывает кол-во памяти и хранить текущую сумму паралелно с охередью.
...
Рейтинг: 0 / 0
04.02.2016, 19:04
    #39163295
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
AxeleronSerge163,
Используйте для начала не класс, а структуру для Goods.
От чего это спасет?
У него есть
Код: c#
1.
public String Name { set; get; }
...
Рейтинг: 0 / 0
04.02.2016, 19:22
    #39163314
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
ЕвгенийВAxeleronSerge163,
Используйте для начала не класс, а структуру для Goods.
От чего это спасет?
У него есть
Код: c#
1.
public String Name { set; get; }


Хочешь сказать, что String - не immutable class? Хотя согласен, нужно сравнение.
...
Рейтинг: 0 / 0
04.02.2016, 19:42
    #39163333
Serge163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
mikron,
Можно подробнее ваш вариант?
...
Рейтинг: 0 / 0
04.02.2016, 20:34
    #39163353
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Serge163Например, установили лимит 1 Мбайт
Ну так оберни в свой класс, считай объем в очереди. при помещении this.size += object.size, при извлечении this.size -= object.size.
дальше принимай решения в зависимости от this.size
...
Рейтинг: 0 / 0
05.02.2016, 17:32
    #39164308
Serge163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничить объем данных в памяти.
Всем спасибо. Вопрос закрыт. Буду предварительно определять размер товара, затем считать.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ограничить объем данных в памяти. / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]