*
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.66 2006/02/11 23:31:34 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.67 2006/03/04 19:09:09 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "storage/freespace.h"
 #include "storage/smgr.h"
 #include "utils/lsyscache.h"
+#include "utils/memutils.h"
 #include "utils/pg_rusage.h"
 
 
 
    maxtuples = (maintenance_work_mem * 1024L) / sizeof(ItemPointerData);
    maxtuples = Min(maxtuples, INT_MAX);
+   maxtuples = Min(maxtuples, MaxAllocSize / sizeof(ItemPointerData));
    /* stay sane if small maintenance_work_mem */
    maxtuples = Max(maxtuples, MaxHeapTuplesPerPage);
 
        palloc(maxtuples * sizeof(ItemPointerData));
 
    maxpages = MaxFSMPages;
+   maxpages = Min(maxpages, MaxAllocSize / sizeof(PageFreeSpaceInfo));
    /* No need to allocate more pages than the relation has blocks */
    if (relblocks < (BlockNumber) maxpages)
        maxpages = (int) relblocks;