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)