Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 30

Как экономить память?

02.05.2018, 11:52. Показов 681. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем вопрос такого плана, есть пакет в котором около 8 различных классов (в основном это JFram-ы и классы производящие какие-то расчеты). В ходе работы программы происходит открытие фреймов, которые в зависимости от потребности пользователя осуществляют создание новых экземпляров классов, передают друг другу данные, открывают, закрывают разные окна.
Идея была такая создать класс, я назвал его Manager, функция которого вместить в себе методы которые будут создавать классы, окна(JFrame, JDialog), передавать для обработки информацию для обработки и т.п.
В результате в этом классе мне пришлось объявить все классы, которые есть в пакете:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Manager {
    static FramePrimary framePrimary;
    static FrameManipulationKey frameManipulationKey;
    static Coder coder = new Coder();
    static FramePassword framePassword;
                                                                       // ... и т.д.
    protected void start(){                   // запуск программы и основного окна
        framePrimary = new FramePrimary();
        framePrimary.setVisible(true);
    }
    protected static void openManipulationKey(){       // открытие очередного окна 
        frameManipulationKey = new FrameManipulationKey(framePrimary.getX(), framePrimary.getY(), coder);
        frameManipulationKey.setVisible(true);
    }
 
    protected void openFramePassword(){ // еще одного
                                                         // дальше открытие и закрытие этих классов и окон с передачей данных
    }
В этот момент я понял, что будет все это конечно красиво и понятно, но затратно в плане расхода памяти. Ведь я объявляю все классы, которые есть в пакете, но в основном за один сеанс работы программы задействовано лишь меньше половины классов. Вот передо мной и возникла делема, как это красиво все реализовать, но и минимизировать расход памяти. Возможно кто то сталкивался с такой проблемой, подскажите как это правильно сделать.
П.С. может как то сумбурно это все описал, спешил, если что спрашивайте.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2018, 11:52
Ответы с готовыми решениями:

Сборка! Как с экономить?
Всем привет,помогите собрать пк... Суть в том,что бы собрать нормальный пк,но как можно больше с экономить и при этом по минимуму...

Как правильно экономить потребление электричества в электрической сети?
Как правильно экономить потребление электричества в электрической сети? Правильно экономить потребление электричества в электрической...

Экономить электроэнергию
Идея вот в чём. Сейчас применяются двухтарифные (и трёх) счётчики электроэнергии, и электричество ночью гораздо дешевле, чем днём. Хочу...

11
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
02.05.2018, 13:07
Sadovnick, почему у тебя везде статик? ну и не создавай объекты пока не собрался их использовать. Тогда если будет нужен один фрейм, только он и создастся
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
02.05.2018, 13:41
Sadovnick, а почему ты думаешь что у тебя есть проблемы с памятью?
0
0 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 30
02.05.2018, 16:49  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
Sadovnick, почему у тебя везде статик? ну и не создавай объекты пока не собрался их использовать. Тогда если будет нужен один фрейм, только он и создастся
Статик потому, что бы разные экземпляры менеджера не создавали разные экземпляры требуемых классов, а имели доступ к одному и тому же классу. Классы инициализируются в нужных методах, но они все равно должны быть объявлены в менеджере для доступности вне этих методов, иначе как они будут получать данные друг от друга.

Добавлено через 2 минуты
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Sadovnick, а почему ты думаешь что у тебя есть проблемы с памятью?
Я не думаю, что у меня проблемы с памятью, но хотелось бы что бы код написанный мною был наиболее оптимален по требованию ресурсов.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
02.05.2018, 17:07
Цитата Сообщение от Sadovnick Посмотреть сообщение
что бы разные экземпляры менеджера
я подумал, что идея менеджера как раз в том, чтобы он был один...
0
0 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 30
02.05.2018, 17:09  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
я подумал, что идея менеджера как раз в том, чтобы он был один...
тогда он сам должен быть статичный
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
02.05.2018, 20:21
Цитата Сообщение от Sadovnick Посмотреть сообщение
оптимален по требованию ресурсов.
а ты его на калькуляторе собриаешься запускать чтоли?
0
0 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 30
02.05.2018, 20:58  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
а ты его на калькуляторе собриаешься запускать чтоли?
Нет пределу совершенства)
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,439
03.05.2018, 05:48
Цитата Сообщение от Sadovnick Посмотреть сообщение
тогда он сам должен быть статичный
Вообще ни разу. Можно применить как Singleton так и вообще через DI один экземпляр пропихивать всем, кому надо. Использование статики - больше процедурное программирование, как в Си.
0
0 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 30
03.05.2018, 22:12  [ТС]
Singleton - тот же статичный класс
про DI можно подробней?
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,439
04.05.2018, 04:33
Цитата Сообщение от Sadovnick Посмотреть сообщение
Singleton - тот же статичный класс
Не совсем. Статичная только точка входа - фабрика или свойство, значение которого может переопределяться.

Вообще, синглотон тоже считается "фу", но лучшее "фу", чем статический класс. Есть даже общепринятая "таблица" приёмов с "фу" от максимального до вообще без "фу":

* Статический класс (глобальный);
* Синглтон;
* Service Locator;
* DI с внедрением в конструктор;

Цитата Сообщение от Sadovnick Посмотреть сообщение
про DI можно подробней?
Dependency Injection.
0
0 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 30
04.05.2018, 23:41  [ТС]
Понятно. Что бы это все осмыслить и внедрять нужно время. Потому, что будучи самоучкой трудно понять двигаешься в правильном направлении или нет. Спасибо за разъяснения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2018, 23:41
Помогаю со студенческими работами здесь

Сколько места занимают снимки системы? Имеет ли смысл экономить?
Поделитесь своим опытом. Если просмотреть папку screenshots в папке виртуальной машины, там есть один vdi-файл размером в несколько...

Внешняя память PIC: как нарастить внутреннюю память данных?
Я только начал разбираться с ПИКами и пока не все понимаю. Мне нужно организовать систему сбора и обработки информации с газовых датчиков....

Dll на C++ кушает память, как правильно удалять и освобождать память?
Добрый день, совсем мало опыта в программировании на C++, помогите пожалуйста знатоки С++. Есть Dll, типа wrapper для библиотеки...

Разделяемая память POSIX IPC как узнать, что память выделена и её уже можо использовать?
1. Описание проблемы: Две программы. Одна пишет в разделяемую память, другая читает. Из-под читающей программы read невозможно понять...

Когда ставишь память в DIMM2, при этом приходится память переворачивать
Помогите мне. При добавление памяти в столкнулся с проблемой. Когда память стоит в DIMM1 (фото 1) всё работает хорошо. Когда ставишь эту...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru