[ 
https://issues.apache.org/jira/browse/WW-4536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14702740#comment-14702740
 ] 

Lukasz Lenart commented on WW-4536:
-----------------------------------

Thanks for the heap dump!

I see the following solutions here:
- extend {{SkipValidation}} annotation (or introduce a new one) to allow mark 
the whole class to be skipped
- make {{buildValidatorKey}} a non-static method to allow easlly override it - 
this will help with keys like this one 
{{org/tdar/struts/action/SlugViewAction-123456-validation.xml}} where it should 
be the same key for all the actions ( 
{{org/tdar/struts/action/SlugViewAction-validation.xml}} )
- introduce an {{excluded}} classes parameter, ie. 
{{excludedClasses=java.lang.Object, com.opensymphony.xwork2.Preparable, ...}}

wdyt?

> potential memory leak with annotationActionValidatorManager
> -----------------------------------------------------------
>
>                 Key: WW-4536
>                 URL: https://issues.apache.org/jira/browse/WW-4536
>             Project: Struts 2
>          Issue Type: Bug
>          Components: XML Validators
>    Affects Versions: 2.3.20
>            Reporter: adam brin
>             Fix For: 2.3.x
>
>         Attachments: Screen Shot 2015-08-16 at 1.48.30 PM.png, Screen Shot 
> 2015-08-16 at 1.49.22 PM.png
>
>
> We've recently been having issues with our app crashing and trying to track 
> down the root causes.  One of the things we've seen is that over the course 
> of 1 day, 50% of our memory (almost 620 MB of 1.2 GB)  is allocated to 
> "com.opensymphony.xwork.validator.AnnotationActionValidatorManager" according 
> to the heap dump. We also see millions of entries in two SynchronizedMap's:
> * validatorCache (1,635,019  entries)
> * validatorFileCache (87,321 entries)
> Looking through the entries in the validator cache, we se entries for every 
> unique page browsed within the app. Note: we're using staticParam mapping and 
> NamedVariable PatternMatching in action names e.g. {{"$\{id\}/$\{slug\}"}} so 
> effectively every url is unique.
> Looking at the source code, should these maps perhaps be "WeakHashMaps" or 
> WeakReferences so that they're disposed of?
> (source code to the app is here: https://bitbucket.org/tdar/tdar.src/src )



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to