Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
closes #42
It appears that repeated calls to
devtools_client_->GetRuntime()->CallFunctionOn
result in a slow memory leak. I wasn't able to track down the cause, and it may be chromium itself (see puppeteer/puppeteer#5893 for example).This PR works around the issue by tracking the current JavaScript heap usage after each image export operation. When the usage exceeds 50% of the heap limit, then the page is reloaded, which does seem to effectively clear memory usage. There is a performance hit of a couple hundred milliseconds to perform this refresh, which is why I didn't do it for each export operation.
For reference, using the large figures from #42, this page reloading happens every ~20 export operations. For smaller figures, it will be much less frequent.
cc @36000