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

adam brin commented on WW-4536:
-------------------------------

What I see in the heap dump is entries for each class in our controller 
hierarchy with the unique URL structure, e.g.:

{code}
 * TdarActionSupport-...
 * * Abstract PersistableViewController-...
 * * * AbstractResourceViewController-...
 * * * * ResourceViewController-...
{code}

It would seem like this could just have the *ActionClass* and *ActionName*, and 
possibly *interceptor* no?  Almost all of our entries were empty, but the keys 
themselves were taking up all of the space as they might be as long as 512 
characters for the key alone, and multiple entries per URL.

*Question:* Is it necessary to keep track of entries for {{abstract}} classes?

*Question:* In terms of keeping track of what's assigned and not, I'll look, 
the majority that I see are definitely empty. How would I override the 
buildValidatorKey?

*Question:* Is there any harm in allowing the {{validatorCache}} and 
{{validatorFileCache}} to be purgeable? 

> 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