169 похожих чатов

Подскажите такой момент, есть задача, которая требует частого создания больших

FloatArray, и вся фигня в том что размер его постоянно меняется, конечно можно создать один огромный массив и его использовать, попытка оптимизации, но есть и другие места, где такое не прокатит, вот вопрос, как мне Создать обьект и реально его уничтожить, чтобы он не складировался и ждал своего часа в GC а реально освободил ресурсы, это в котлине вообще возможно?

11 ответов

2 просмотра

Никак

Так как нужно будет место GC и вызовется и почистит что не нужно

Наблюдатель-® ] Автор вопроса
Tigran Movsisyan
Так как нужно будет место GC и вызовется и почисти...

Разве при этом не замораживается приложение?

Наблюдатель ® ]
Разве при этом не замораживается приложение?

ну в андроиде он уже вроде в отдельном потоке всё это делает, если я не путаю

Не надо подсказывать GC как делать его работу, он умный и так. Освободит память если уже не надо. Но если очень хочется можно сделать myBigFloatArray = null или FloatArray(1) если он не нуллабельный, это с гарантией сделает старый большой массив доступным сборщику

Наблюдатель-® ] Автор вопроса
Сергей П.
Не надо подсказывать GC как делать его работу, он ...

Ну это FloatArray(1) похоже на то чтобы прошлый массив потерял ссылку на объект ибо создастся новый объект, это больше похоже на то чтобы GC просто быстрее его нашел что нужно грохнуть при следующей сборке мусора, не уверен что будет особый выигрыш, ибо мы сами не освободили ресурс ка на Си. Интересно как обстоят дела с BufferArray и сборкой мусора

Невозможно, котлин тут не причем

Наблюдатель ® ]
Ну это FloatArray(1) похоже на то чтобы прошлый ма...

Скажем так, для того что бы сборщик собрал гигабайтный массив надо что бы на него не было активных ссылок Допустим у нас есть полугигабайтный массив а1 и надо создать новый такого же размера а2, а старый уже не нужен Val a2=ByteArray(500 000 000) может кинуть ООМ потому что старый массив а1 еще имеет ссылки хотя программисту и не нужен уже a1=null Val a2=ByteArray(500 000 000) гарантирует возможность сборки a1 перед отведнием памяти для а2. Это самое близкое к сишному освобождению памяти

Наблюдатель-® ] Автор вопроса
Сергей П.
Скажем так, для того что бы сборщик собрал гигабай...

Пока GC не снесет a1 хоть мы и дали ему null мы успеем создать а2, и реально получим гиг занятого пространства, а когда GC раздуплится, тогда и освободит a1, это я ловлю переполнения на устройстве с 1гиг ОЗУ, есть старый телефон на A7 именно для теста, что если на таком старом двуядерном говне приложение будет работать, значит и у пользователей будет работать. Хорошо иметь старые телефоны для теста приложения, какой смысл тестить на телефоне с 18 гиг ОЗУ)

Наблюдатель ® ]
Пока GC не снесет a1 хоть мы и дали ему null мы ус...

Если памяти на a2 не хватает и при ее отведении будет ООМ gc вызовется немедленно и соберет все что может включая а1

Наблюдатель-® ] Автор вопроса
Сергей П.
Если памяти на a2 не хватает и при ее отведении бу...

По идее я понимаю что в этот момент GC должен заморозить приложение, пока не освободит память, ибо а2 выделение должно ждать тогда пока место не освободится, и если места ваще нет после GC то креш outofmemory, я так понял

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта