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

Alex Chow commented on LUCENE-6814:
-----------------------------------

bq. Hmm, how many {{PatternTokenizer}} instances do you have? With 24 bulk 
indexing threads you should (I think?) only have at most 24 instances * 4 MB 
max should be ~100 MB.

{{PatternTokenizer}} instances also scale with the number of indices 
(technically shards?) if you use your own analyzer based on a 
{{PatternAnalyzer}}. Custom analyzers get instantiated per index since they 
have their own mappings. We have 168 indices, so that's a _lot_. One heap dump 
I was poking around had 3432 instances, but it'd probably have grown more since 
some analyzers haven't had to create their {{TokenStreamComponents}} yet.

> PatternTokenizer indefinitely holds heap equal to max document it has ever 
> tokenized
> ------------------------------------------------------------------------------------
>
>                 Key: LUCENE-6814
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6814
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Michael McCandless
>            Assignee: Michael McCandless
>             Fix For: Trunk, 5.4
>
>         Attachments: LUCENE-6814.patch, LUCENE-6814.patch
>
>
> Caught by Alex Chow in this Elasticsearch issue: 
> https://github.com/elastic/elasticsearch/issues/13721
> Today, PatternTokenizer reuses a single StringBuilder, but it doesn't free 
> its heap usage after tokenizing is done.  We can either stop reusing, or ask 
> it to {{.trimToSize}} when we are done ...



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to