You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary Gregory (JIRA)" <ji...@apache.org> on 2019/07/05 23:00:00 UTC

[jira] [Closed] (BCEL-320) Add LruCacheClassPathRepository that can scan many JAR files without OutOfMemoryError

     [ https://issues.apache.org/jira/browse/BCEL-320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Gregory closed BCEL-320.
-----------------------------
       Resolution: Fixed
    Fix Version/s: 6.4.0

In git master.

> Add LruCacheClassPathRepository that can scan many JAR files without OutOfMemoryError
> -------------------------------------------------------------------------------------
>
>                 Key: BCEL-320
>                 URL: https://issues.apache.org/jira/browse/BCEL-320
>             Project: Commons BCEL
>          Issue Type: Improvement
>            Reporter: Tomo Suzuki
>            Priority: Minor
>             Fix For: 6.4.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> (This ticket is derivation from [BCEL-317|https://issues.apache.org/jira/browse/BCEL-317], which I found creating ConstantUtf8 cache is not straightforward under current ClassPathRepository design.)
> We use BCEL library in https://github.com/GoogleCloudPlatform/cloud-opensource-java . Thank you for great library.
> h1. Background
> Our use of BCEL ClassPathRepository and MemorySensitiveClassPathRepository causes OutOfMemoryError when they scan many (~200) JAR files. Initially I thought this problem could be fixed by [BCEL-317|https://issues.apache.org/jira/browse/BCEL-317], but it turned out that it's not straightforward under current design. Instead of focusing on ConstantUtf8, I decided to use my own custom ClassPathRepository that uses LRU cache internally to hold JavaClass instances. It worked.
> This ticket is to contribute the idea to BCEL library so that other users can benefit from it.
> h1. Test Case
> This GitHub project is a example of OutOfMemoryError caused by scanning many JAR files using BCEL ClassPathRepository and MemorySensitiveClassPathRepository:
> https://github.com/suztomo/bcel-oome-example



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)