Skip to content

fixed memory leak when display multframe, share for everyone,want to help others #538

@mingBee

Description

@mingBee

when I use cornerstone to display multframe and scroll to change, The memory increase very fast .
I found the reason is possMessage to worker, transfer param do not add and the type of pixelData param is Unit8, not arraybuff.
I change like this:

eefca0df38e62ae123902ffbfa5fe14

cornerstoneWADOImageLoader.js
processDecodeTask method 831 line
function processDecodeTask(imageFrame, transferSyntax, pixelData, options) {
let passs_pixelData = new Uint8Array(pixelData.slice(0)); //copy pixelData, pass worker not clear data ,new .. prevent .buffer error
var priority = options.priority || undefined;
// var transferList = options.transferPixelData ? [passs_pixelData.buffer] : undefined;
var transferList = [passs_pixelData.buffer]; //worker transfer
var loaderOptions = (0, _options.getOptions)();
var strict = loaderOptions.strict,
decodeConfig = loaderOptions.decodeConfig,
useWebWorkers = loaderOptions.useWebWorkers;

if (useWebWorkers === false) {
if (codecsInitialized === false) {
(0, _decodeJPEG.initializeJPEG2000)(decodeConfig);
(0, _decodeJPEGLS.initializeJPEGLS)(decodeConfig);

  codecsInitialized = true;
}

return new Promise(function (resolve, reject) {
  try {
    var decodeArguments = [imageFrame, transferSyntax, passs_pixelData, decodeConfig, options];
    var decodedImageFrame = _decodeImageFrame2.default.apply(undefined, decodeArguments);

    (0, _calculateMinMax2.default)(decodedImageFrame, strict);

    resolve(decodedImageFrame);
  } catch (error) {
    reject(error);
  }
});

}

return _webWorkerManager2.default.addTask('decodeTask', {
imageFrame: imageFrame,
transferSyntax: transferSyntax,
pixelData: passs_pixelData.buffer, //pass buffer,make transfer effect
options: options
}, priority, transferList).promise;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions