commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tomo Suzuki (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (BCEL-320) A new ClassPathRepository that can scan many JAR files without OutOfMemoryError
Date Mon, 17 Jun 2019 15:58:00 GMT

     [ 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)

Mime
View raw message