xmoonlight, мы говорим конкретно об инсталяторе.
С bytenode я знаком. В нем есть некоторые баги, из-за которых он применим не ко всем версиям Node.js, из-за чего мне пришлось для своего тулкита (который я пилю специально для целей затруднения получения исходников) реализовывать все это заново, чтобы была поддержка версий с 6 и до 12.
Но не стоит забывать, что снапшоты - эте не панацея, а лишь неплохая дополнительная помеха, которая не даст быстро получить исходники. (злоумышленникам придется прибегнуть к инструментам типа IDA Pro и им подобным) Enigma Virtual Box можно использоваться вместе с генерацией снапшотов. Это еще больше затруднит получение исходников.
Но именно сам инсталятор никаким образом не помогает защитить исходники.
Автор конечно не упоминал какое у него приложение, но в случае использования инсталятора - пользователям остаются доступными исходники, что вполне может быть критично для автора
Возможно я ошибаюсь, но вроде в node js нет настоящей многопоточности из коробки,
Уже есть, потоки в рамках одного процесса - https://nodejs.org/api/worker_threads.html
Ну и можно шарить "кусок памяти" между потоками при помощи SharedArrayBuffer и Atomics
Можно, например, шарить между потоками файловый дескриптор (мне пригодилось при реализации многопоточного архиватора для проприетарного архива).
Владимир Обабков, если Вы о коде, который в FileAPI.handleFile, то он будет асинхронным по отношению к блоку try/catch , который Вы объявили. Объявленный Вами блок поймает только ошибку, которая будет выброшена методом addEventListener, но не кодом в FileAPI.handleFile
Блок try/catch Вам придется добавить внутрь функции FileAPI.handleFile
Adel Khalitov, также сборщик мусора не моментально освобождает память. Даже если ссылок на переменную уже не осталось, сборка мусора все равно произойдет спустя какое-то время. Можно, конечно, вызывать GC руками, но нужно ли оно?)
Adel Khalitov, например, если чтение идет через fs.readFile - то это уже тоже проблема (особенно при больших файлах), так как весь файл сначала считывается в память, а затем только отдается в качестве результат работы функции.
Вариантов проблемных мест много. Пытаться что-то угадать не видя кода - бесполезное дело.
Adel Khalitov, все равно очень мало информации. Не видно как именно читаются файлы.
Хотя уже видно как минимум первая проблема - вы все сохраняете в память в объекте data
Adel Khalitov, невозможно составить краткий универсальный гайд.
Опишите хотя бы какого рода работа там выполняется. Обработка файлов или что-то подобное?
Adel Khalitov, ну как минимум профайлить работу только самой функции.
К сожалению, "гадание" по скриншотах ни к чему не приведет. Нужно видеть сам код.
С bytenode я знаком. В нем есть некоторые баги, из-за которых он применим не ко всем версиям Node.js, из-за чего мне пришлось для своего тулкита (который я пилю специально для целей затруднения получения исходников) реализовывать все это заново, чтобы была поддержка версий с 6 и до 12.
Но не стоит забывать, что снапшоты - эте не панацея, а лишь неплохая дополнительная помеха, которая не даст быстро получить исходники. (злоумышленникам придется прибегнуть к инструментам типа IDA Pro и им подобным)
Enigma Virtual Box можно использоваться вместе с генерацией снапшотов. Это еще больше затруднит получение исходников.
Но именно сам инсталятор никаким образом не помогает защитить исходники.