Re: Small patch to show only memory usage.
- From: Tim Janik <timj gtk org>
- To: "R. Bernstein" <rocky panix com>
- Cc: Gtk+ Developers <gtk-devel-list gnome org>
- Subject: Re: Small patch to show only memory usage.
- Date: Sun, 4 Feb 2001 01:14:19 +0100 (CET)
On Sat, 3 Feb 2001, R. Bernstein wrote:
> Reworked the patch as per suggestions of Tim Janik and Havoc Pennington,
> have tested and put on ftp://ftp.gtk.org/incoming/gtk-rocky-001501-0.patch.tar.gz
>
ok, i don't see this patch on gtk-devel-list, so i'm
not stripping the quotes.
however, i still have some comments:
1) pleas use unified_ diffs
2) do s/g_mem_summarize/g_mem_profile/ source compatibility is not
an issue here and i don't want x functions that all do the same thing
3) scratch the *msg argument, it's extraneous, if people want it they
can easily g_log() stuff prior to g_mem_profile()
4) but newlines before "{" braces.
5) scratch G_MEM_SHOW_LARGE_ALLOC, it's not too much extra output
generated here and puts the output of G_MEM_SHOW_ALLOC_SIZE into
perspecitive, and aspect that i don't wanna loose.
>
> *** ../glib-orig.h Thu Mar 23 21:34:01 2000
> --- ../glib.h Thu Feb 1 01:34:04 2001
> ***************
> *** 1366,1373 ****
>
> #endif /* !USE_DMALLOC */
>
> ! void g_mem_profile (void);
> ! void g_mem_check (gpointer mem);
>
> /* Generic allocators
> */
> --- 1366,1387 ----
>
> #endif /* !USE_DMALLOC */
>
> ! void g_mem_profile (void);
> !
> ! /* Memory summary flags.
> ! */
> ! typedef enum
> ! {
> ! G_MEM_SHOW_ALLOC_SIZE = 1 << 0,
> ! G_MEM_SHOW_LARGE_ALLOC = 1 << 1,
> ! G_MEM_SHOW_ALLOC = 1 << 2,
> ! G_MEM_SHOW_FREED = 1 << 3,
> ! G_MEM_SHOW_USED = 1 << 4,
> ! G_MEM_SHOW_ALL = 0xff
> ! } GMemSummaryFlags;
> !
> ! void g_mem_summarize (const gchar *msg, const GMemSummaryFlags show_what);
> ! void g_mem_check (gpointer mem);
>
> /* Generic allocators
> */
> *** ../gmem-orig.c Fri May 19 03:25:05 2000
> --- ../gmem.c Thu Feb 1 01:35:54 2001
> ***************
> *** 415,430 ****
>
> #endif /* ! USE_DMALLOC */
>
> -
> void
> g_mem_profile (void)
> {
> #ifdef ENABLE_MEM_PROFILE
> gint i;
> gulong local_allocations[MEM_PROFILE_TABLE_SIZE];
> gulong local_allocated_mem;
> gulong local_freed_mem;
>
> g_mutex_lock (mem_profile_lock);
> for (i = 0; i < MEM_PROFILE_TABLE_SIZE; i++)
> local_allocations[i] = allocations[i];
> --- 415,439 ----
>
> #endif /* ! USE_DMALLOC */
>
> void
> g_mem_profile (void)
> {
> + g_mem_summarize (NULL, G_MEM_SHOW_ALL);
> + }
> +
> + void
> + g_mem_summarize (const gchar *msg, const GMemSummaryFlags show_what)
> + {
> #ifdef ENABLE_MEM_PROFILE
> gint i;
> gulong local_allocations[MEM_PROFILE_TABLE_SIZE];
> gulong local_allocated_mem;
> gulong local_freed_mem;
>
> + if (msg != NULL) {
> + g_log (g_log_domain_glib, G_LOG_LEVEL_INFO,"%s", msg);
> + }
> +
> g_mutex_lock (mem_profile_lock);
> for (i = 0; i < MEM_PROFILE_TABLE_SIZE; i++)
> local_allocations[i] = allocations[i];
> ***************
> *** 433,449 ****
> g_mutex_unlock (mem_profile_lock);
>
> for (i = 0; i < (MEM_PROFILE_TABLE_SIZE - 1); i++)
> ! if (local_allocations[i] > 0)
> g_log (g_log_domain_glib, G_LOG_LEVEL_INFO,
> "%lu allocations of %d bytes", local_allocations[i], i + 1);
>
> ! if (local_allocations[MEM_PROFILE_TABLE_SIZE - 1] > 0)
> g_log (g_log_domain_glib, G_LOG_LEVEL_INFO,
> "%lu allocations of greater than %d bytes",
> local_allocations[MEM_PROFILE_TABLE_SIZE - 1], MEM_PROFILE_TABLE_SIZE - 1);
> ! g_log (g_log_domain_glib, G_LOG_LEVEL_INFO, "%lu bytes allocated", local_allocated_mem);
> ! g_log (g_log_domain_glib, G_LOG_LEVEL_INFO, "%lu bytes freed", local_freed_mem);
> ! g_log (g_log_domain_glib, G_LOG_LEVEL_INFO, "%lu bytes in use", local_allocated_mem - local_freed_mem);
> #endif /* ENABLE_MEM_PROFILE */
> }
>
> --- 442,462 ----
> g_mutex_unlock (mem_profile_lock);
>
> for (i = 0; i < (MEM_PROFILE_TABLE_SIZE - 1); i++)
> ! if (local_allocations[i] > 0 && (show_what & G_MEM_SHOW_ALLOC_SIZE))
> g_log (g_log_domain_glib, G_LOG_LEVEL_INFO,
> "%lu allocations of %d bytes", local_allocations[i], i + 1);
>
> ! if (local_allocations[MEM_PROFILE_TABLE_SIZE - 1] > 0
> ! && (show_what & G_MEM_SHOW_LARGE_ALLOC))
> g_log (g_log_domain_glib, G_LOG_LEVEL_INFO,
> "%lu allocations of greater than %d bytes",
> local_allocations[MEM_PROFILE_TABLE_SIZE - 1], MEM_PROFILE_TABLE_SIZE - 1);
> ! if (show_what & G_MEM_SHOW_ALLOC)
> ! g_log (g_log_domain_glib, G_LOG_LEVEL_INFO, "%lu bytes allocated", local_allocated_mem);
> ! if (show_what & G_MEM_SHOW_FREED)
> ! g_log (g_log_domain_glib, G_LOG_LEVEL_INFO, "%lu bytes freed", local_freed_mem);
> ! if (show_what & G_MEM_SHOW_USED)
> ! g_log (g_log_domain_glib, G_LOG_LEVEL_INFO, "%lu bytes in use", local_allocated_mem - local_freed_mem);
> #endif /* ENABLE_MEM_PROFILE */
> }
>
>
>
---
ciaoTJ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]