Member 13536260 Ответов: 5

Что заставляет приложения потреблять много памяти?


Здравствуйте, у меня есть 6-летний ноутбук, в котором я кодирую уже 6 месяцев(замена идет). Я хочу спросить, что заставляет приложения потреблять много памяти (как я вижу в диспетчере задач)? и как разработчик, что я могу сделать, чтобы свести его к минимуму? спасибо


РЕДАКТИРОВАТЬ

Спасибо всем тем, кто ответил, Еще один вопрос, если вы не возражаете, имеет ли значение язык, который вы использовали при создании приложения (я все еще говорю о памяти)? например: действительно ли python съедает много памяти, что C?

Что я уже пробовал:

Я пробовал гуглить, но так и не нашел для себя правильного ответа

5 Ответов

Рейтинг:
2

gggustafson

Слон в комнате стоит плохой дизайн и плохая практика кодирования Не имеет значения, возникла ли проблема в программном обеспечении сторонних производителей или в программном обеспечении местного производства.

Пять десятилетий назад мне пришлось разрабатывать и программировать программное обеспечение, которое помещалось в 320K байт памяти. Вплоть до 2000 года значительные ограничения накладывались на размер и временную сложность программного обеспечения, которое я производил. Возможно, потому, что большая его часть была критически важным программным обеспечением реального времени. Возможно, потому, что мои клиенты требовали 50% - ного резерва как в скорости вычислений, так и в использовании памяти.

Но во всех случаях, чтобы решить проблемы, с которыми я столкнулся, мне нужно было быть в курсе текущих исследований в области программного обеспечения практики и опыта. Я должен был быть членом Ассоциации вычислительной техники (неправильно названной, потому что она действительно имела мало общего с аппаратным обеспечением) или компьютерного общества IEEE. Мне пришлось активно участвовать в издании книги. мой практика и опыт. Но самое главное, я должен был представить свою работу моим коллегам и коллегам, от которых я получал руководство и временную поддержку.

So what's the reason we have the current state of affairs. Simply poorly trained programmers; poorly trained managers; rampant unprofessionalism. What can you do? You can only correct the problems that you yourself generate. So don't generate any. Solve software problems in the simplest way possible. Seek the advice of more senior programmers (with more than 20 years experience). Perform research (the problem that you are currently solving has probably been solved a number of times and, hopefully, the results will be published). Be critical of solutions that you find online. Seek out trusted colleagues to review your design and code. Always spend time to design a solution (don't just rush in and code).

И, наконец, удачи.


Рейтинг:
1

Dave Kreskowiak

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

Если у вас есть исходный код, напишите лучший код и делайте это тщательно-это лучший совет, который вы получите.

Другие возможности сводятся к проблемам совместимости с другими программами/драйверами/патчами. Нет никакого способа предсказать, что произойдет там между любыми двумя или более частями программного обеспечения, поэтому нет никакого способа "предотвратить" проблемы от этих проблем.


Рейтинг:
0

OriginalGriff

Это не простой вопрос - и на него нет простого ответа!
Многое будет зависеть от языка, который вы используете: C и C++ часто используют указатели, и если приложение не "очищается", когда оно заканчивает с памятью, то оно не может быть восстановлено, и используемая память увеличивается со временем.
Но C# и VB этого не делают (они могут, но это трудно и совсем не нормально для приложения общего назначения - я не использовал указатель C# в гневе с тех пор, как начал работать с языком!) Вместо этого они используют ссылку (как и управляемый C++), и это включает в себя сборщик мусора, который восстанавливает неиспользуемую память, когда вы закончите с ней, но только тогда, когда фактическая память становится низкой. Это не беспокоит, если это не нужно, потому что это требует времени, и ваше приложение должно "ждать", пока оно это делает.

Таким образом, нет ни одной причины: это может быть то, что приложение загружает много вещей, чтобы кэшировать его, поэтому оно работает быстрее, как только приложение полностью запускается вместо того, чтобы каждый раз обращаться к БД; это может быть то, что оно загружает много изображений (которые занимают значительное пространство); это может быть то, что разработчик не знает, что он делает, и выделяет огромные объемы памяти, которые ему не нужны!

В принципе, существует столько же причин, сколько и приложений! :смеяться:


Рейтинг:
0

Wendelius

Как объяснялось в предыдущем решении, существует множество причин, по которым приложение может потреблять много памяти. При создании приложения вы можете контролировать некоторые причины, но некоторые вы не можете. Например, если вы используете плохо разработанный драйвер, который вызывает потребление памяти.

Как разработчик, вы должны позаботиться о том, чтобы не хранить ненужные вещи в памяти и освобождать память, когда она больше не нужна. Например, если вы разрабатываете с помощью C#, то вам следует позаботиться о том, чтобы ссылки, которые больше не нужны, были должным образом освобождены и объекты были удалены, когда это применимо. Таким образом, вы позаботитесь о том, чтобы сборщик мусора мог удалить неиспользуемые объекты из памяти. Вы можете погрузиться в более подробную информацию по адресу Основы сборщика мусора и советы по производительности[^]

Кроме того, среды разработки часто предлагают инструменты для исследования проблем, связанных с памятью, среди прочего. Например, Visual Studio имеет множество возможностей для исследования потребления памяти. Для получения более подробной информации взгляните на Анализ использования памяти в Visual Studio - Visual Studio | Microsoft Docs[^]


Рейтинг:
0

Patrice T

Цитата:
Что заставляет приложения потреблять много памяти?

На этот вопрос нет стандартного ответа, потому что каждое отдельное приложение имеет свою собственную причину потреблять память.
Причины варьируются от реальной необходимости, из-за того, что делает приложение, до плохого дизайна и всего, что находится между ними.