You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "adam brin (JIRA)" <ji...@apache.org> on 2015/08/18 04:00:49 UTC

[jira] [Comment Edited] (WW-4536) potential memory leak with annotationActionValidatorManager

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

adam brin edited comment on WW-4536 at 8/18/15 2:00 AM:
--------------------------------------------------------

I've started working though this. One item of slight concern is the static {{buildValidatorKey}} which cannot be overridden, and also makes the IOC nature of the AnnotationValidationManager bean slightly more problematic as other sections of the codebase could call this (which they don't).  

I'll note that adding the @SkipValidation to many of our methods that don't have validation has definitely made a major difference in our heap space profile. (thanks, btw)


was (Author: abrin):
I've started working though this. One item of slight concern is the static {{buildValidatorKey}} which cannot be overridden, and also makes the IOC nature of the AnnotationValidationManager bean slightly more problematic as other sections of the codebase could call this (which they don't).  

I'll note that adding the @SkipValidation to many of our methods that don't have validation has definitely made a major difference in our heap space profile.

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