After more testing I narrow the input to stdin length for memory to 
increase pointing to Node.js and Deno executables to when I call this in 
the browser
port.postMessage(new Array((4096*3)+818)); 

65531

is written to log.txt, which is expected
JSON.stringify(new Array((4096*3)+818)).length // 65531 

when I add 1 to that input array
port.postMessage(new Array((4096*3)+819)); 

1567386741

is written to log.txt.
The relevant Node.js code

function getMessage() {
  const header = new Uint32Array(1);
  readSync(0, header);
  const content = new Uint8Array(header[0]);
  writeFileSync('log.txt', JSON.stringify(header[0]));
  readSync(0, content);
  return content;
}

and Deno code

async function getMessage() {
  const header = new Uint32Array(1);
  await Deno.stdin.read(header);
  await Deno.writeTextFile("log.txt", header[0]);
  const output = new Uint8Array(header[0]);
  await Deno.stdin.read(output);
  return output;
}
On Saturday, December 31, 2022 at 2:35:32 PM UTC-8 guest271314 wrote:

> Appears to be a memory leak in Node.js and Deno when input to stdin 
> (and/or stdout) is greater than 4096*3. node executable memory usage climbs 
> to 700MB+ then exits when input is new Array(4096*4). 
>
> Are there any V8 flags I can use to work around this?
>
> On Saturday, December 31, 2022 at 12:11:16 PM UTC-8 guest271314 wrote:
>
>> I created Native Messaging hosts in several programming languages 
>> including C, C++, JavaScript. In JavaScript I created a host specific to 
>> QuickJS, Node.js, Deno. Node.js and Deno depend on V8. I use the same call 
>> in the extension to create hosts
>>
>> globalThis.name = chrome.runtime.getManifest().short_name;
>>
>> globalThis.port = chrome.runtime.connectNative(globalThis.name);
>> port.onMessage.addListener((message) => console.log(message));
>> port.onDisconnect.addListener((p) => 
>> console.log(chrome.runtime.lastError));
>> port.postMessage(new Array(200000));
>>
>> chrome.runtime.onInstalled.addListener((reason) => {
>>   console.log(reason);
>> });
>>
>> The same code used to work on Chromium Dev Channel. Now the V8 JavaScript 
>> engine-specific versions increase memory usage exponentially to upwards of 
>> 1GB, then exit.
>>
>> The input is echoed when the input array is 2000.
>>
>> Appears to be some kind of caching or process blocking. I am not sure 
>> though. 
>>
>> Any recent changes that impact buffering or caching procceses?
>>
>>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-users/2cac191a-9edc-4613-be2b-7cc5aae6cc63n%40googlegroups.com.

Reply via email to