Scalanie 1000 plików PDF za pomocą iText powoduje wyświetlenie java.lang.OutOfMemoryError: miejsca sterty Java

Próbuję połączyć 1000 plików PDF za pomocą iText. Nie wiem, gdzie się dzieje wyciek pamięci. Poniżej znajduje się przykładowy kod. Zauważ, że usuwam plik child-pdf, gdy tylko połączę się z plikiem nadrzędnym. Zwróć uwagę na błąd w poniższym kodzie lub czy jest jakiś lepszy sposób na zrobienie tego bez koncepcji pamięci. Ten proces jest wykonywany przez serwlet (nie samodzielny program)

FileInputStream local_fis = null;
BufferedInputStream local_bis = null;
File localFileObj = null;
for(int taIdx=0;taIdx<totalSize;taIdx++){
    frObj = (Form3AReportObject)reportRows.get(taIdx);
    localfilename = companyId + "_" +  frObj.empNumber + ".pdf";

    local_fis = new FileInputStream(localfilename);
    local_bis = new BufferedInputStream(local_fis); 
    pdfReader = new PdfReader(local_bis);

    cb = pdfWriter.getDirectContent(); 
    document.newPage();
    page = pdfWriter.getImportedPage(pdfReader, 1);
    cb.addTemplate(page, 0, 0);
    local_bis.close();
    local_fis.close();

    localFileObj = new File(localfilename);
    localFileObj.delete();
}
document.close();

questionAnswers(6)

yourAnswerToTheQuestion