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

Tomo Suzuki updated BCEL-320:
-----------------------------
    Description: 
(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



  was:
(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
https://github.com/suztomo/bcel-oome-example




> A new ClassPathRepository 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
>
> (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)

Reply via email to