|
папка это файл?
|
|||
---|---|---|---|
#18+
Dima T andron81 пропущено... почему проверка malloc на нулл это смерть сейчас ??? поясните более доступным языком, пожалуйста? Все банально: программа попросила выделить кусочек памяти, а в ответ - нельзя, нет свободной памяти. И что дальше делать если без этого кусочка нельзя дальше работать? Отказываться работать, вот что делать. Пишем свой Фотошоп. Два варианта на открытии файла: - Не хватило памяти. - Файл неверного формата. MsgBox(). В случае вебсервиса -- отказ в обслуживании, держитесь там, заходите позжее. Dima T PS ИМХО необработанное исключение от new полезней, тут хотя бы деструкторы отработают. А потом оно упадёт на необработанном исключении. Очень круто. Да и не стоит примешивать обработку ошибок и работу с памятью. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2020, 21:24 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
andron81 mayton Но для современного процесса в современной ОС... это просто смерть без вариантов. почему проверка malloc на нулл это смерть сейчас ??? поясните более доступным языком, пожалуйста? Потому что не существует никакого ценного принятия решения по этому поводу. Давай порассуждаем. Ты написал приложение. Бизнес-приложение. Которое выполняет полезную работу. И вдруг. На каком-то этапе приложение не может аллоцировать память. Работа дальше заблокирована. Давай придумай какой-то план выхода из этой ситуации и мы обсудим насколько он реалистичен. Напомню что приложение - это не привет-мир. Это бизнес-приложение которое обычно держит несколько сотен сетевых коннектов к базам и сервисам и в режиме event-driven реагирует на бизнес события сети. И эта активность - не прекращается. Обсуждать системные утилиты мне неинтересно т.к. их % ничтожно мал в общей массе софта который мы разрабатываем за деньги каждый день. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2020, 21:36 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton, сложный вопрос для меня от человека умудренного опытом. ну в данном случае наверно высвечиваем "нехватка памяти для размещения структуры DIR и сливаем эту фразу в лог, а затем выход. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2020, 21:46 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Из сферы Unix(K&R, Linux, C). Можно посмотреть исходники утилиты tar и потрассировать ее работу в рантайме. Из всех утилит что работают с файловой системой она быстрее всех справляется с операциями слияния тысяч мелких файлов в один. Также и в обратку. Я спецом сравнивал ее с zip и другими тулзами и пришел к выводу что tar - самый быстрый на локальной файловой системе. Какие гвозди в него вбиты - надо разбираться. Но там будут многие ответы на вопросы по оптимизации. Я решил сделать для начала не tar а du (DiskUsage). Он не копирует а просто обходит структуру фолдеров. Вот что получилось по системным вызовам. Запускал по своему /home каталогу Фрагмент лога strace Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Ожидаю ваших активных комментариев. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2020, 21:54 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
andron81 mayton, сложный вопрос для меня от человека умудренного опытом. ну в данном случае наверно высвечиваем "нехватка памяти для размещения структуры DIR и сливаем эту фразу в лог, а затем выход. Верно. Все что мы можем сделать - это вывалиться с сообщением об аварии. Более того. Даже сама процедура аварийного выхода может не сработать т.к. ей для корректного завершения (!) сюрприз тоже может понадобиться память. Ведь если ты пишешь качественное бизнес-приложение - ты обязан закрыть корректно все курсоры в БД. Завершить транзакции в деструкторах твоих бизнес-процессов. Вот поэтому для многих языков-платформеров нет никакой адекватной реакции на OutOfMemory exception. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2020, 21:58 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
andron81 mayton, сложный вопрос для меня от человека умудренного опытом. ну в данном случае наверно высвечиваем "нехватка памяти для размещения структуры DIR и сливаем эту фразу в лог, а затем выход. Конечно. Так и делают библиотеки на которые опирается Майтун. А он, соответственно, не знает как реагировать на ситуации, которые отрабатывает базовая библиотека. Из этого делается вывод: на эти ситуации отреагировать невозможно. Но вывод ошибочный. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2020, 22:29 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Вообще я вот думаю наверно надо как советовал злой Сибиряков: забить болт на реализацию readdir, opendir и closedir. Воспользоваться ими из библиотеки и закрыть тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2020, 22:52 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Dima T Все банально: программа попросила выделить кусочек памяти, а в ответ - нельзя, нет свободной памяти. И что дальше делать если без этого кусочка нельзя дальше работать? отобрать у другой программы, очевидно же весь мир так устроен, чё велосипед изобретать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 04:57 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Алексей Роза 2020 пропущено... v4 или 4.1 эта проблема была ещё лет 15 назад у меня реально линух с/на самбу копирует быстрее, чем линух с/на nfs и чистая винда тоже быстрее а чё она решена? NFS 100 лет в обед. Сервер ставится и работает. Какие проблемы там решать столько лет?! Я могу конечно грешить на свои кривые руки... но блин, я поставил сервер, а он сходу еле копирует. И настраивать пытался. А здесь https://www.sql.ru/forum/linux спрашивал? я гуглил, а эта проблема так то распространённая у меня он 1.8гб файл копирует быстро до 50%, а потом еле-еле, практически виснет винда в/на самбу его скопирует за неск. секунд petrav Алексей Роза 2020 эта проблема была ещё лет 15 назад у меня реально линух с/на самбу копирует быстрее, чем линух с/на nfs и чистая винда тоже быстрее а чё она решена? NFS 100 лет в обед. Так может драйвер NTFS под Линукс кривой? так он же в ядре? Ну у меня убунта, какой там кривой драйвер... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 05:06 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Функции подобные strlen, strcmp имеют линейный расчет сложности. Тоесть чем длиннее строка тем они дольше делают перемотку вперед. 2х гигабайтная строка будет считаться несколько секунд. Примерно как memory тест при старте старых комьютеров. Когда черный экран Биоса нам освящает загрузку. Особенность сишных строк чорт бы их подрал. Злобные любители Паскаля здесь хохочут над нами. И они правы. а в паскале как? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 06:07 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton ntbackup.exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 06:08 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Ожидаю ваших активных комментариев. ты тоже Dmitriy? mayton Верно. Все что мы можем сделать - это вывалиться с сообщением об аварии. а чё вы со свопом сделали, м? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 06:17 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Бизнес-приложение. Которое выполняет полезную работу. И вдруг. На каком-то этапе приложение не может аллоцировать память. Работа дальше заблокирована. P.S. Точка - не единственный знак препинания.Приложение выполняет полезную работу и вдруг, на каком-то этапе, не может выделить память. Всё - дальше работа заблокирована. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 06:31 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020 Dima T Все банально: программа попросила выделить кусочек памяти, а в ответ - нельзя, нет свободной памяти. И что дальше делать если без этого кусочка нельзя дальше работать? отобрать у другой программы, очевидно же весь мир так устроен, чё велосипед изобретать Микроконтроллер? У кого отберёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 07:12 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020 mayton Ожидаю ваших активных комментариев. ты тоже Dmitriy? mayton Верно. Все что мы можем сделать - это вывалиться с сообщением об аварии. а чё вы со свопом сделали, м? Мы рассматриваем сферический C в вакууме. И уровень туториалов бедняги Андрона. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 07:27 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
По поводу утилиты disk usage. Кто имеет комментарии? Эксперты мои дорогие... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 07:31 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Даже сама процедура аварийного выхода может не сработать т.к. ей для корректного завершения (!) сюрприз тоже может понадобиться память. да ладно ? мы ж отвалились по условию malloc == null то есть память не аллоцировалась, а значит свободна . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 08:04 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
andron81 malloc == null то есть память не аллоцировалась, а значит свободна . Странная логика. Память не аллоцировалась потому что ее нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 08:14 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Dima T andron81 malloc == null то есть память не аллоцировалась, а значит свободна . Странная логика. Память не аллоцировалась потому что ее нет. скажем я запросил аллоцировать 20Г, а свободно 500Мб. malloc выдал null. ну наверно ж 500Мб на то чтобы выдать сообщение хватит . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 08:18 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020 mayton Функции подобные strlen, strcmp имеют линейный расчет сложности. Тоесть чем длиннее строка тем они дольше делают перемотку вперед. 2х гигабайтная строка будет считаться несколько секунд. Примерно как memory тест при старте старых комьютеров. Когда черный экран Биоса нам освящает загрузку. Особенность сишных строк чорт бы их подрал. Злобные любители Паскаля здесь хохочут над нами. И они правы. а в паскале как? Там разные строки были. Был вариант с хранением длины. Как в std::string. И был вариант pchar это наподобие сишных ASCIIZ. И кажется еще было несколько библиотечных вариантов. Ну в основном использовался первый вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 09:05 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
andron81 Dima T пропущено... Странная логика. Память не аллоцировалась потому что ее нет. скажем я запросил аллоцировать 20Г, а свободно 500Мб. malloc выдал null. ну наверно ж 500Мб на то чтобы выдать сообщение хватит . Да. Для девопсовской или админской задачи такой вариант подходит. Приложение не взлетело при старте. Админ зашел в конфигурацию. И вместо size=20G указал size=14G к примеру и всё стартовало успешно. Но на практике, подобные пробирующие алгоритмы не работают потому что память нужна срочно и многим работающим потокам. И если уже дошло до того что приложение работало несколько месяцев и вдруг не смогло выделить память - то всё очень плохо и вот эта игра на понижение... или этот торг ну окей я не смог взять 20Гиг так возьму 20 минус 500 метров - уже не очень полезен. Где-то есть утечка. Надо разбираться. Хочешь я в нашем форуме просто ради прикола подниму штук 10 старых топиков где есть malloc и мы просто обсудим какие умные принятия решения можно сделать именно здесь и сейчас в исходнике? И окажется что вобщем-то никаких. Можем просто падать с сообщением в STDERR. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 09:15 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton andron81 пропущено... скажем я запросил аллоцировать 20Г, а свободно 500Мб. malloc выдал null. ну наверно ж 500Мб на то чтобы выдать сообщение хватит . Да. Для девопсовской или админской задачи такой вариант подходит. Приложение не взлетело при старте. Админ зашел в конфигурацию. И вместо size=20G указал size=14G к примеру и всё стартовало успешно. Но на практике, подобные пробирующие алгоритмы не работают потому что память нужна срочно и многим работающим потокам. И если уже дошло до того что приложение работало несколько месяцев и вдруг не смогло выделить память - то всё очень плохо и вот эта игра на понижение... или этот торг ну окей я не смог взять 20Гиг так возьму 20 минус 500 метров - уже не очень полезен. Где-то есть утечка. Надо разбираться. Хочешь я в нашем форуме просто ради прикола подниму штук 10 старых топиков где есть malloc и мы просто обсудим какие умные принятия решения можно сделать именно здесь и сейчас в исходнике? И окажется что вобщем-то никаких. Можем просто падать с сообщением в STDERR. много чего хочу , но больше на данный момент хочу сделать первичную задачу. и ещё хочу её потом реализовать посредством findFirst для спортивного интереса. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 09:27 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
andron81, у меня какие-то приступы энтузиазма на старости лет. вот к примеру книги читаю 40 летней давности:) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 09:29 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Был вариант с хранением длины. так а длина не через strlen() вычислялась? Или тут strlen() в цикле? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 09:31 |
|
папка это файл?
|
|||
---|---|---|---|
#18+
mayton Хочешь я в нашем форуме просто ради прикола подниму штук 10 старых топиков где есть malloc и мы просто обсудим какие умные принятия решения можно сделать именно здесь и сейчас в исходнике? И окажется что вобщем-то никаких. Можем просто падать с сообщением в STDERR. Я хочу, поднимите один топик, для начала. PS: И не падать, а корректно выходить, тоже вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2020, 09:59 |
|
|
start [/forum/topic.php?fid=57&msg=39997131&tid=2017328]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 151ms |
0 / 0 |