summaryrefslogtreecommitdiff
path: root/src/w32heap.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2014-06-04 14:46:51 +0300
committerEli Zaretskii <eliz@gnu.org>2014-06-04 14:46:51 +0300
commita7f999dc5f002030c9a4c648f7017acf11274b1d (patch)
tree1ecec1fecc6f181989a516780c8d169362047f5c /src/w32heap.c
parent5dff48b0f8a399899f72e1fcf2db0a552f071070 (diff)
downloademacs-a7f999dc5f002030c9a4c648f7017acf11274b1d.tar.gz
Improve dumped memory report on MS-Windows.
src/w32heap.c (report_temacs_memory_usage): Improve the report by reporting the large blocks that are actually occupied at dump time.
Diffstat (limited to 'src/w32heap.c')
-rw-r--r--src/w32heap.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/w32heap.c b/src/w32heap.c
index 011bffdc9ab..8c547ff6460 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -479,7 +479,7 @@ free_before_dump (void *ptr)
/* Look for the big chunk. */
int i;
- for(i = 0; i < blocks_number; i++)
+ for (i = 0; i < blocks_number; i++)
{
if (blocks[i].address == ptr)
{
@@ -498,11 +498,22 @@ free_before_dump (void *ptr)
void
report_temacs_memory_usage (void)
{
+ DWORD blocks_used = 0, large_mem_used = 0;
+ int i;
+
+ for (i = 0; i < blocks_number; i++)
+ if (blocks[i].occupied)
+ {
+ blocks_used++;
+ large_mem_used += blocks[i].size;
+ }
+
/* Emulate 'message', which writes to stderr in non-interactive
sessions. */
fprintf (stderr,
- "Dump memory usage: Heap: %" PRIu64 " Large blocks(%lu): %" PRIu64 "\n",
- (unsigned long long)committed, blocks_number,
+ "Dump memory usage: Heap: %" PRIu64 " Large blocks(%lu/%lu): %" PRIu64 "/%" PRIu64 "\n",
+ (unsigned long long)committed, blocks_used, blocks_number,
+ (unsigned long long)large_mem_used,
(unsigned long long)(dumped_data + DUMPED_HEAP_SIZE - bc_limit));
}
#endif