Вы пишете бэкэнд-сервис для вашего приложения, который должен извлекать данные из вашего MongoDB. Проблема в том, что ваша обработка работает в синхронном режиме - вместо этого вам нужно работать как асинхронный.
// Quick fix for your code
const findData = (myColl, myDb) => {
return new Promise(function (resolve, reject) {
MongoClient.connect(url)
.then((client) => {
return client.db(myDb)
}).then((db) => {
return db.collection(myColl).find().sort({ nmFull: 1 })
.toArray((err, result) => { resolve(result); });
}).catch((err) => {
reject(err);
});
});
};
Вот несколько рекомендаций по подключению MongoDB на Node.js,
Можно контролировать собственную "кучу" со счетчиками в производительности montitor. (perfmon32) однако она, привычка ломает его для Вас на на основание DLL, даже jvm.dll, будет включена здесь.
Самые профильные инструменты там могут присоединить к процессу и получить и отследить выделения памяти и освобождение. Это позволяет им размышлять, где утечки. Один довольно хороший, который я нашел при недавней попытке разыскать утечки памяти в собственном коде, который назвали от Java, является Блоком проверки допустимости Памяти
Я верю даже выполнению этой внутренней части, DLL C не был бы очень легок.
Насколько я понимаю, что инструменты Standard Java Monitoring собирают информацию путем запросов Виртуальной машины, таким образом даже при том, что та память находится в том же процессе, если виртуальная машина не знает, как осмотреть динамически подключаемую библиотеку, это не сможет видеть что-либо. Я полагаю, что необходимо было бы использовать внешний инструмент или сделать несколько крупные модификации к DLL для отслеживания его использования памяти.
Вы попытались использовать Средство просмотра Процесса для рытья глубже.
Если у Вас есть источник к DLL, Вы могли бы восстановить с библиотеками отладки и возможно средством отслеживания выделения мадам - и отладка с помощью отладчика Visual C++ (необходимо будет сказать этому использовать JAVA-приложение).
Если у Вас нет источника - затем, опции ограничены.
Ну, так как DLL не является действительно частью "кучи" Java, я думаю, что наиболее точные показания должны были бы записать, что маленькая профильная программа (или маленькое программа Java/JNI или C++/C#, и т.д.), чтобы импортировать и использовать DLL похожим способом к Вашему приложению и не сделать НИЧЕГО ИНОГО - просто использует DLL, как Вы делаете - получающийся профиль памяти этого профильного приложения должен быть хорошим приближением к профилю памяти DLL.
Необходимо также протестировать, чтобы видеть, существует ли форма статического ЗУ или динамической памяти DLL - берут память measurments непосредственно прежде и после того, как DLL загружается, чтобы видеть, существует ли одноразовый хит ~130MB, или если память медленно повышается со временем.
На Солярисе / Linux, я услышал, что Коллектор Studio Sun / Анализатор является хорошим инструментом для этого, но Вы застреваете на земле DLL (или DLL черт, как это было),