Pull to refresh
6
0
Send message

А я вот поддержу автора.

  1. Не так много встраиваемых, статически типизированных языков, и для определенной ниши - крайне полезно;

  2. Это просто клевый Just for fun - я завидую!

Не про тему, а так, для интереса: В Linux совсем плохо с настройкой политик? Т.е. в условно стандартном Linux, функционирующем в предприятии, есть возможность централизованно раздавать настройки?

Спасибо за понимание.

Наверное мне надо учиться лучше излагать мысли, или как минимум, определять в посте контекст, граничные условия.

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

Спасибо. Хоть кто-то понял что в посте речь не про микросервисы (и прочее, прочее...), не про автоматическое восстановление инфраструктуры, а про гораздо более частную задачу, в рамках конкретного процесса.

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

Я продал машину, езжу на такси, в МСК это гораздо дешевле. А канистры, ТО и прочее - проблемы такситстов. Считаю настоящее программисткое решение - главное эффективность.

В специфических ситуациях да. К сожалению, в общем случае, это мало вероятно. Я так думаю.

Начну с конца, я знал что будут минусовать, да и ладно.

Теперь по делу.

  1. Конечно это не панацея, т.е. даже осовобождение достаточного кол-ва памяти совершенно не гарант, тем не менее увеличивает в разы возможность продолжения работы, хотя бы логгера.

  2. Память могла не утечь, почему все пишут про утечку памяти? Я использую профилировщик, в том числе с анализом Memory Leak. Есть куча других возможностей накосячить: у прикладников есть возможность накосячить, запрос данных, открытие файлов разных... Память может сожрать все, что угодно. Вы же не будете на каждую строчку вешать определение необходимого размера памяти, для ее выполения. Да я и не представлю себе как это возможно в большой системе (ну ладно, в средней).

  3. Про ситуацию. Да нехватка памяти редкая ситуация, но ее все равно нужно обрабатывать, и это моя прямая обязанность.

  4. Всех пишущих без багов и точно знающих как писать программы в которых всегда все хорошо, прошу писать в личку. Возьму на работу.

Пример к пункту 2, про ситуацию, как ее обработать:

Есть загрузка XML файла, который всегда небольшой, используется DOM парсер. Вдруг, без обьявленя войны, он оказался в гигабайт. DOM сжирает всю память, мы падаем. Дальше варианты:

  1. Как некоторые предлагают, мы падаем с ошибкой ОС с безумным кодом, который нам не очем не говорит.

  2. Мы падаем с ошибкой, где видно что это в методе XML.Load. Запрашиваем файл, все понимаем, переделывем на SAX.

  3. Какой вариант вы выберете?

Если кто-то придумает оптимальное управление памятью, он купит Гугл )))

Это уже чудесно, есть информация для разбора полетов.

Во многом я с вами согласен. Я по этому и написал "Возможно", т.к. ситуации бывают разные.

а) Все равно будет расход памяти, что не делайте. Как минимум копирвание текста Exception в лог, вот вам операция с памятью.

б) это не всегда возможно.

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

P.S. В очередной раз повторюсь (больше не буду - надоело), вопрос именно в предотвращении системного креша, и получении информации, которая позволит дальше разбираться с проблеммой. Все остальное опция.

И причем тут это? Ну да, там тоже есть про нехватку памяти, но в совершенно, абсолютно в другом контексте.

Так я о том же. Если у вас нехватка памяти, поведение процесса становится не предсказуемым (Undefined Behaviour - пользуясь терминологией C). Описанный механизм, как раз и позволяет вернуть память, и обработать ошибку. Т.е. выдать сообщение, сохранить протокол, если все это происходит в try finally, возможно даже освободить память занятую чем то внутри блока try и продолжить работать.

Вы серьезно думаете, что когда процесс выполняет Free, память сразу уходит ОС?

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

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

Другой процесс тут конечно не причем. А у потоков память общая.

Значит я придумал очередной велосипед. Можно ссылку на какую нибудь книгу из кучи, самую интересную на ваш взгляд?

Любой менеджер памяти ее фрагментирует, если не брать идеальные ситуации. Я лишь хотел сказать, что кол-во свободной памяти не равно возможности размещения очередного блока.

Поясните, не понял.

Information

Rating
Does not participate
Registered
Activity