Skip to content

RFE: Improve ement's memory footprint #299

@sergiodj

Description

@sergiodj

OS/platform

GNU/Linux

Emacs version and provenance

GNU Emacs 29.4.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0) of 2024-07-16

I built my own Emacs.

Emacs command

emacs server + client

Emacs frame type

A mix of both (but I only use ement on GUI)

Ement package version and provenance

0.15.1, from ELPA

Actions taken

Like many Emacs users, I leave mine open for several days/weeks/months. Ever since I started using ement, I've been noticing Emacs getting slower and slower over time, to the point where the best "fix" is to restart it.

I haven't tried to tweak any garbage collector settings, but I don't think that's where the problem lies. It seems like all this memory (see below) is actually being used, so there's nothing to be collected.

Observed results

I ran memory-report, which took almost 1 hour to gather all data (!!!). This is what I saw:

Estimated Emacs Memory Usage

   3.2 GiB  Total Buffer Memory Usage
   751 MiB  Overall Object Memory Usage
   549 MiB  Memory Used By Global Variables
    83 MiB  Reserved (But Unused) Object Memory
    11 MiB  Memory Used By Symbol Plists
   812 KiB  Total Image Cache Size

Object Storage

   279 MiB  Strings
   259 MiB  Conses
   148 MiB  Vectors
    58 MiB  Intervals
   7.1 MiB  Symbols
   219 KiB  Buffer-Objects
    39 KiB  Floats

Largest Buffers

   186 MiB  *Ement Notifications*
   186 MiB  *Ement Mentions*
   149 MiB  *Ement Room: REDACTED
   148 MiB  *Ement Room: REDACTED
   148 MiB  *Ement Room: REDACTED
   147 MiB  *Ement Room: REDACTED
   147 MiB  *Ement Room: REDACTED
   146 MiB  *Ement Room: REDACTED
   146 MiB  *Ement Room: REDACTED
   146 MiB   *ement-room--format-message*
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED
   145 MiB  *Ement Room: REDACTED

Largest Variables

   354 MiB  ement-syncs
   145 MiB  ement-sessions
   9.2 MiB  package-archive-contents
   7.1 MiB  gnus-dup-hashtb
   6.9 MiB  gnus-dup-list
     4 MiB  gnus-active-hashtb
   1.7 MiB  load-history
   1.4 MiB  org-fold-core--property-symbol-cache
   1.4 MiB  org-persist--associated-buffer-cache
     1 MiB  ucs-normalize-hangul-translation-alist
   813 KiB  nerd-icons/mdicon-alist
   805 KiB  ement-users
   764 KiB  easy-menu-converted-items-table
   630 KiB  info-lookup-cache
   620 KiB  gnus-newsgroup-data
   558 KiB  emoji--names
   556 KiB  face--new-frame-defaults
   430 KiB  modus-themes-faces
   345 KiB  uni-confusable-table
   327 KiB  package--compatibility-table

Expected results

I'd like to be able to keep using Emacs without having to restart it :-).

Backtrace

No response

Etc.

I compile my own Emacs, but I try to stick to upstream's release branch and that's what I've been using on my two main machines. On both, I see the same symptoms.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions