unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Nix <nix@esperi.org.uk>
To: "Óscar Fuentes" <ofv@wanadoo.es>
Cc: emacs-devel@gnu.org
Subject: Re: Emacs bzr memory footprint
Date: Fri, 21 Oct 2011 20:11:29 +0100	[thread overview]
Message-ID: <87k47ykvmm.fsf@spindle.srvr.nix> (raw)
In-Reply-To: <87r526yzcf.fsf@wanadoo.es> ("Óscar Fuentes"'s message of "Fri, 21 Oct 2011 20:27:28 +0200")

On 21 Oct 2011, Óscar Fuentes told this:
> The memory for the text of a buffer, is a single chunk? Or, more
> generally, are large chunks of memory allocated for big buffers? If the
> answer is yes, memory fragmentation may be problematic for those who
> work with large buffers, unless the allocating algorithm avoids that.

Emacs goes to some lengths to avoid allocating memory on the brk()ed
heap for buffers of significant size. The rules are somewhat arcane.

On a limited number of platforms (currently Cygwin, FreeBSD and IRIX
6.5), mmap() is used to map buffer text directly.

On platforms using the copy of Doug Lea's malloc() in src/gmalloc.c (or
using Doug Lea's malloc without being a GNU system, if any such systems
exist), buffers are allocated using the frankly terrifying
block-relocating memory allocator in ralloc.c, which uses sbrk()
directly and arranges for blocks allocated that way to dodge out of the
way of malloc() using the morecore_hook. (I'd be scared to trust my data
to this one.)

On GNU platforms which appear to be using Doug Lea's malloc(), we turn
this off and just use malloc() directly.

Emacs relies on all of these allocating the buffer storage in a single
(virtually) contiguous chunk (modulo the gap): the gap-motion code in
insdel.c, and much else, depends on being able to use simple pointer
arithmetic to move around the buffer.

-- 
NULL && (void)



  parent reply	other threads:[~2011-10-21 19:11 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-13  9:24 Emacs bzr memory footprint Carsten Mattner
2011-10-13 10:01 ` Eli Zaretskii
2011-10-13 10:33   ` Andreas Schwab
2011-10-13 10:46     ` Eli Zaretskii
2011-10-13 13:08       ` Carsten Mattner
2011-10-13 13:38         ` Eli Zaretskii
2011-10-13 15:22           ` Miles Bader
2011-10-13 15:30             ` Eli Zaretskii
2011-10-13 16:16               ` Stefan Monnier
2011-10-13 17:33                 ` Dmitry Antipov
2011-10-13 18:42                   ` Eli Zaretskii
2011-10-14  3:09                     ` Dmitry Antipov
2011-10-13 16:46             ` Stephen J. Turnbull
2011-10-13 16:59               ` Carsten Mattner
2011-10-13 13:13   ` Carsten Mattner
2011-10-13 13:43     ` Eli Zaretskii
2011-10-13 14:10       ` Dave Abrahams
2011-10-13 14:46         ` Eli Zaretskii
2011-10-13 15:05           ` Dave Abrahams
2011-10-13 14:22       ` Stefan Monnier
2011-10-13 16:55         ` Carsten Mattner
2011-10-13 17:09           ` Stefan Monnier
2011-10-14 12:11             ` Carsten Mattner
2011-10-14 21:02             ` John Wiegley
2011-10-15  1:22               ` Stefan Monnier
2011-10-13 17:22           ` Richard Riley
2011-10-13 16:12       ` Chong Yidong
2011-10-13 20:18     ` chad
2011-10-14 12:13       ` Carsten Mattner
2011-10-14 12:18         ` Carsten Mattner
2011-10-14 15:49           ` Sven Joachim
2011-10-14 16:30             ` Ted Zlatanov
2011-10-14 16:48               ` Sven Joachim
2011-10-14 17:16                 ` Carsten Mattner
2011-10-15 18:12                 ` Sven Joachim
2011-10-20 13:35                 ` Nix
2011-10-20 23:02                   ` John Wiegley
2011-10-21  0:19                     ` Nix
2011-10-21  8:19                       ` Eli Zaretskii
2011-10-21 12:05                         ` Nix
2011-10-21 12:36                           ` Eli Zaretskii
2011-10-21 12:47                             ` Nix
2011-10-21 14:30                               ` Dmitry Antipov
2011-10-21 15:22                                 ` Nix
2011-10-21 18:29                                   ` Dmitry Antipov
2011-10-21 18:36                                     ` Nix
2011-10-21 13:30                       ` Stefan Monnier
2011-10-21 15:02                         ` Nix
2011-10-21 17:52                           ` Stefan Monnier
2011-10-21 19:12                             ` Nix
2011-10-21 15:34                         ` Dmitry Antipov
2011-10-21 18:00                           ` Stefan Monnier
2011-10-21 18:27                             ` Óscar Fuentes
2011-10-21 18:58                               ` Eli Zaretskii
2011-10-21 19:11                               ` Nix [this message]
2011-10-21 20:18                                 ` Eli Zaretskii
2011-10-21 20:21                                   ` Nix
2011-10-22  7:34                             ` Carsten Mattner
2011-10-22  8:30                               ` Stephen J. Turnbull
2011-10-22 12:03                                 ` Carsten Mattner
2011-10-22 16:08                                   ` Stephen J. Turnbull
2011-10-27 22:10                                     ` Ted Zlatanov
2011-10-28  6:40                                       ` Eli Zaretskii
2011-10-28  9:34                                         ` Stephen J. Turnbull
2011-10-28  9:47                                           ` Eli Zaretskii
2011-10-28 10:22                                             ` Stephen J. Turnbull
2011-10-28 10:36                                               ` Eli Zaretskii
2011-10-28 11:52                                                 ` valgrind warnings [Re: Emacs bzr memory footprint] Dan Nicolaescu
2011-10-28 14:08                                                   ` Stephen J. Turnbull
2011-10-28 14:38                                                   ` Dan Nicolaescu
2011-10-28 15:17                                                     ` Chong Yidong
2011-10-28 15:35                                                       ` Eli Zaretskii
2011-10-28 15:27                                                     ` Eli Zaretskii
2011-10-28 16:34                                                       ` Dan Nicolaescu
2011-10-28 18:36                                                         ` Eli Zaretskii
2011-10-28 18:51                                                           ` Eli Zaretskii
2011-10-28 18:52                                                           ` Dan Nicolaescu
2011-10-28 19:03                                                             ` Eli Zaretskii
2011-10-28 15:08                                                   ` Ted Zlatanov
2011-12-04 21:11                                                     ` Florian Weimer
2011-10-28 20:20                                                   ` Dan Nicolaescu
2011-10-29  3:40                                                     ` Chong Yidong
2011-10-29  7:04                                                       ` Andreas Schwab
2011-10-29 16:25                                                         ` Stefan Monnier
2011-11-04 12:51                                                           ` Dan Nicolaescu
2011-11-04 13:08                                                             ` Andreas Schwab
2011-11-04 15:50                                                             ` valgrind warnings Paul Eggert
2011-11-04 17:37                                                             ` valgrind warnings [Re: Emacs bzr memory footprint] Stefan Monnier
2011-11-04 19:10                                                               ` Dan Nicolaescu
2011-11-04 20:56                                                                 ` Paul Eggert
2011-11-05 22:08                                                                   ` Dan Nicolaescu
2011-11-06  2:34                                                                     ` Paul Eggert
2011-11-06 12:37                                                                       ` Dan Nicolaescu
2011-11-07  1:13                                                                         ` Paul Eggert
2011-10-29  9:10                                                     ` Eli Zaretskii
2011-10-22  8:44                               ` Emacs bzr memory footprint Sven Joachim
2011-10-22 11:57                                 ` Carsten Mattner
2011-10-23 18:04                               ` Stefan Monnier
2011-10-25 17:35                         ` Nix
2011-10-25 20:23                           ` Stefan Monnier
2011-10-25 20:34                             ` Nix
2011-10-26 14:52                             ` gnutls memory leak [Was: Re: Emacs bzr memory footprint] Chong Yidong
2011-10-27  6:10                               ` Chong Yidong
2011-10-27 22:01                                 ` Ted Zlatanov
2011-10-28 12:04                                   ` Ted Zlatanov
2011-10-28 17:29                                     ` Nix
2011-10-27 22:03                               ` Ted Zlatanov
2011-10-13 21:23 ` Emacs bzr memory footprint Dan Nicolaescu
2011-10-14 13:04 ` Carsten Mattner
2011-10-14 18:13 ` James Cloos
2011-10-17 20:52   ` Juri Linkov
2011-10-17 23:34     ` James Cloos
2011-10-18  7:24       ` Andreas Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k47ykvmm.fsf@spindle.srvr.nix \
    --to=nix@esperi.org.uk \
    --cc=emacs-devel@gnu.org \
    --cc=ofv@wanadoo.es \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).