about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-01-08 00:41:12 +0000
committerEric Wong <e@80x24.org>2019-01-08 00:43:14 +0000
commit7d02b9e64455831d3bda20cd2e64e0c15dc07df5 (patch)
tree9a219098dd2ec77f6f1bdad520b7cc972e661533
parent081a425975a71c98d2a872ec592e0987e87bec7f (diff)
downloadpublic-inbox-7d02b9e64455831d3bda20cd2e64e0c15dc07df5.tar.gz
While we try to discard the $smsg (SearchMsg) objects quickly,
they remain referenced via $node (SearchThread::Msg) objects,
which are stored forever in $ctx->{mapping} to cull redundant
words out of subjects in the thread skeleton.

This significantly cuts memory bloat with large search results
with '&x=t'.  Now, the search results overhead of
SearchThread::Msg and linked objects are stable at around 350K
instead of ~7M per response in a rough test (there's more
savings to be had in the same areas).

Several hundred kilobytes is still huge and a large per-client
cost; but it's far better than MEGABYTES per-client.
-rw-r--r--lib/PublicInbox/View.pm2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index bb49c035..416cb4a8 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -218,7 +218,7 @@ sub index_entry {
         $rv .= $subj . "\n";
         $rv .= _th_index_lite($mid_raw, \$irt, $id, $ctx);
         my @tocc;
-        my $mime = $smsg->{mime};
+        my $mime = delete $smsg->{mime}; # critical to memory use
         my $hdr = $mime->header_obj;
         my $from = _hdr_names_html($hdr, 'From');
         obfuscate_addrs($obfs_ibx, $from) if $obfs_ibx;