From b449dcf6557febf1771b1b144b69841af31d3339 Mon Sep 17 00:00:00 2001 From: Sidi Liang <1467329765@qq.com> Date: Wed, 5 Feb 2025 14:46:31 +0800 Subject: [PATCH] Web: force gc in server.js --- nasal-web-app/server.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/nasal-web-app/server.js b/nasal-web-app/server.js index d0784c2..8acbbaf 100644 --- a/nasal-web-app/server.js +++ b/nasal-web-app/server.js @@ -3,6 +3,7 @@ const path = require('path'); const yargs = require('yargs/yargs'); const { hideBin } = require('yargs/helpers'); const koffi = require('koffi'); +require('expose-gc'); // Parse command line arguments const argv = yargs(hideBin(process.argv)) @@ -37,7 +38,7 @@ let nasalLib; try { // First load the library const lib = koffi.load(path.join(__dirname, '../module/libnasal-web.dylib')); - + // Then declare the functions explicitly nasalLib = { nasal_init: lib.func('nasal_init', 'void*', []), @@ -45,7 +46,7 @@ try { nasal_eval: lib.func('nasal_eval', 'const char*', ['void*', 'const char*', 'int']), nasal_get_error: lib.func('nasal_get_error', 'const char*', ['void*']) }; - + } catch (err) { console.error('Failed to load nasal library:', err); process.exit(1); @@ -66,7 +67,7 @@ app.post('/eval', (req, res) => { try { const result = nasalLib.nasal_eval(ctx, code, showTime ? 1 : 0); const error = nasalLib.nasal_get_error(ctx); - + if (error && error !== 'null') { if (argv.verbose) console.log('Nasal error:', error); res.json({ error: error }); @@ -83,6 +84,7 @@ app.post('/eval', (req, res) => { } finally { if (argv.verbose) console.log('Cleaning up Nasal context'); nasalLib.nasal_cleanup(ctx); + global.gc() } }); @@ -91,4 +93,4 @@ app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); console.log(`Visit http://localhost:${PORT} to use the Nasal interpreter`); if (argv.verbose) console.log('Verbose logging enabled'); -}); \ No newline at end of file +});