[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
  BLINKER MEMORY PACK     (Clipper Summer '87)
------------------------------------------------------------------------------

  Purpose : Specify automatic memory packing frequency

  Syntax  : BLINKER MEMORY PACK <nuFrequency)

  Default : 0

  Example : # Set the packing to once every 20 overlaid procedure calls

            BLINKER MEMORY PACK 20

  This command is used to set the frequency with which the Blinker overlay
  manager defragments Clipper free memory. The parameter is a decimal
  number indicating the number of overlaid procedure calls after which
  memory is defragmented, and may be set to any value from 0 to 65534.
  (The default value is 0, which causes no packing to occur.)

  Clipper is continually allocating and freeing dynamic memory, causing it
  to become more and more fragmented as execution of an application
  continues.  Clipper only considers memory to be available if it is in
  chunks of 4kb or greater, thus large applications can often run out of
  memory after prolonged execution.

  The BLINKER MEMORY PACK command allows the developer of a Clipper Summer
  '87 application to defragment dynamic memory as often as needed without
  modifying the application, and to tune the frequency of the packing to
  suit the individual application. This process is also performed by the
  Clipper function MEMORY(0), but much more slowly.

  The defragmentation process consists of two things: joining up of
  contiguous blocks of free memory, and then resetting the roving pointer
  which is used in selecting (indicating) the next memory allocation.  At
  the time of the defragmentation, this pointer is set to specify the
  highest available location in memory. This causes memory to be allocated
  from the beginning each time rather than fragmenting the whole memory
  area, which can significantly reduce the deterioration of available
  memory due to fragmentation.

  Due to the underlying architecture of Clipper Summer '87's memory
  allocation scheme, it is not possible to move allocated blocks of memory
  around, as there is no means of updating the pointer(s) to allocated
  blocks. This means that true garbage collection is impossible, but the
  defragmentation described here is the next best thing, and helps the
  problem considerably.

  Setting the frequency to a low number may slow down the application, but
  will keep memory fragmentation to a minimum, giving the maximum saving
  on memory.  Setting the frequency to a higher number will not noticeably
  slow the application down, but the memory gain will be less as the
  fragmentation will be relatively worse (although still a lot better than
  with no packing at all.)

  An optimum frequency appears to be around 10 for an average application,
  giving a significant increase in memory while not significantly slowing
  the application.  The optimum frequency for a given application may vary
  considerably from this frequency, and can only be established by trial
  and error.

See Also: BLIMEMPAK() BLIDISFRG()
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson