A small memory-usage improvement for PDF documents opened from TypedArray-data
This patch contains a small optimization specifically for the case when `getDocument` is called with TypedArray-data. In that case we'll still hold onto that data, which could obviously be large, even after the "GetDocRequest"-message has been sent to the worker-thread. In practice this will most likely not affect memory usage in any noticeable way, since the application calling `getDocument` will probably also be keeping a reference to the TypedArray-data. However, it seems like a good idea to ensure that the PDF.js API *itself* won't unnecessarily keep this data alive.
This commit is contained in:
		
							parent
							
								
									3fdf2ba4e3
								
							
						
					
					
						commit
						7e852851fd
					
				@ -513,6 +513,12 @@ async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Release the TypedArray data, when it exists, since it's no longer needed
 | 
				
			||||||
 | 
					  // on the main-thread *after* it's been sent to the worker-thread.
 | 
				
			||||||
 | 
					  if (source.data) {
 | 
				
			||||||
 | 
					    source.data = null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (worker.destroyed) {
 | 
					  if (worker.destroyed) {
 | 
				
			||||||
    throw new Error("Worker was destroyed");
 | 
					    throw new Error("Worker was destroyed");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -953,8 +959,8 @@ class PDFDocumentProxy {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * @returns {Promise<TypedArray>} A promise that is resolved with a
 | 
					   * @returns {Promise<Uint8Array>} A promise that is resolved with a
 | 
				
			||||||
   *   {TypedArray} that has the raw data from the PDF.
 | 
					   *   {Uint8Array} that has the raw data from the PDF.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  getData() {
 | 
					  getData() {
 | 
				
			||||||
    return this._transport.getData();
 | 
					    return this._transport.getData();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user