From: | "Mario Gonzalez" <gonzalemario(at)gmail(dot)com> |
---|---|
To: | "Jaime Casanova" <systemguards(at)gmail(dot)com>, editores(at)editores(dot)com(dot)co, postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [GENERAL] Concurrencia |
Date: | 2006-03-16 17:19:22 |
Message-ID: | 2065a6cf0603160919j450bfdd8g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda pgsql-general |
On 16/03/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> Mario Gonzalez escribió:
>
> > Mhh, si te refieres a algun error de programacion en el manejo de
> > memoria (memory leak) bueno, puede suceder. Como un ejemplo muy simple
> > y adrede mira el caso de esta funcion
> >
> > void
> > example()
> > {
> > char *b;
> > b = (char *)malloc(sizeof(char *));
> > }
>
> Observa que Postgres rara vez hace esto. Generalmente se usa palloc()
> en lugar de malloc(). La diferencia es que palloc() registra cada
> bloque emplazado ("allocated") como perteneciente a un "contexto". Con
> cierta periodicidad el contexto puede "resetearse", en cuyo caso todos
> los bloques emplazados se liberan automaticamente. Por ejemplo tu
> funcion podria hacer algo asi:
>
> void example() {
> MemoryContext context,
> oldcontext;
> int i;
>
> context = AllocSetContextCreate( ... algunos parametros ...);
> oldcontext = MemoryContextSwitchTo(context);
>
> for (i = 0; i < 1000; i++) {
> char *b;
> b = palloc(sizeof(char *));
> }
>
> MemoryContextSwitchTo(oldcontext);
> AllocSetDelete(context);
> }
Humm, interesante eh? Pero por regla general por que no se usa
palloc() en todos los codigos? Quiza tendra un costo el crear un
MemoryContext.
>
> por mucho que tu llames a esta funcion un millon de veces, nunca va a
> usar mas de de (1000 * sizeof(char*)), aunque nunca hagas pfree().
>
> Pero no entiendo que tiene que ver esto con la pregunta original :-)
>
De editores(at)editores(dot)com(dot)co preguntaron por un desbordamiento de
memoria o manejo de memoria si mal no recuerdo. Por eso mande el mail
:)
>
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-03-16 17:36:27 | Re: [GENERAL] Concurrencia |
Previous Message | Alvaro Herrera | 2006-03-16 16:54:39 | Re: [GENERAL] Concurrencia |
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-03-16 17:36:27 | Re: [GENERAL] Concurrencia |
Previous Message | Kai Hessing | 2006-03-16 17:11:33 | Constraint Question |