void
JMMHashTable::PrintAllocated
(
    const JBoolean printInternal // = kJFalse
)
const
{
    cout << "\nAllocated block statistics:" << endl;

    cout << "\nAllocated user memory:" << endl;

    JConstHashCursor<JMMRecord> cursor(itsAllocatedTable);
    JSize totalSize = 0;
    while ( cursor.NextFull() )
    {
        const JMMRecord thisRecord = cursor.GetValue();
        if ( !thisRecord.IsManagerMemory() )
        {
            PrintAllocatedRecord(thisRecord);
            totalSize += thisRecord.GetSize();
        }
    }

    cout << "\nTotal allocated memory:  " << totalSize << " bytes" << endl;

    if (printInternal)
    {
        cout << "\nThe following blocks are probably owned by the memory manager"
             << "\nand *should* still be allocated--please report all cases of user"
             << "\nallocated memory showing up on this list!" << endl;

        cursor.Reset();
        while ( cursor.NextFull() )
        {
            const JMMRecord thisRecord = cursor.GetValue();
            if ( thisRecord.IsManagerMemory() )
            {
                PrintAllocatedRecord(thisRecord);
            }
        }
    }
}
void
JMMArrayTable::PrintAllocated
	(
	const JBoolean printInternal // = kJFalse
	)
	const
{
	cout << "\nAllocated block statistics:" << endl;

	cout << "\nAllocated user memory:" << endl;

	const JSize count = itsAllocatedTable->GetElementCount();
	for (JIndex i=1;i<=count;i++)
		{
		const JMMRecord thisRecord = itsAllocatedTable->GetElement(i);
		if ( !thisRecord.IsManagerMemory() )
			{
			PrintAllocatedRecord(thisRecord);
			}
		}

	if (printInternal)
		{
		cout << "\nThe following blocks are probably owned by the memory manager"
		     << "\nand *should* still be allocated--please report all cases of user"
		     << "\nallocated memory showing up on this list!" << endl;

		for (JIndex i=1;i<=count;i++)
			{
			const JMMRecord thisRecord = itsAllocatedTable->GetElement(i);
			if ( thisRecord.IsManagerMemory() )
				{
				PrintAllocatedRecord(thisRecord);
				}
			}
		}
}