Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.sao.ru/cats/~satr/JS/plugin/mem.htm
Дата изменения: Wed Jan 15 23:17:18 1997
Дата индексирования: Tue Oct 2 05:25:44 2012
Кодировка:

Поисковые слова: agn
Memory [Contents] [Previous] [Next] [Index]

Chapter 7
Memory

This chapter describes the Plug-in API functions that allocate and free memory as needed by the plug-in.

Because plug-ins share memory space with Communicator, they can take advantage of any customized memory-allocation scheme the browser has. Browser memory schemes may be more efficient than standard OS memory functions, and can give the browser flexibility in the way it manages memory. In addition, the plug-in usually has the option of using its own memory functions.

The methods that handle memory belong to the Netscape group of methods.

For details about memory management on your platform, see your platform documentation. For a reference entry that describes each function, see "Memory Methods" in the API reference.

[Top]


Allocating and Freeing Memory

To allocate memory and free memory, use these paired functions:

The plug-in can call the Plug-in API NPN_MemAlloc function instead of the standard malloc function to allocate dynamic memory. Using NPN_MemAlloc offers several advantages to the plug-in.

Mac OS
The Mac OS Communicator frequently fills its memory partition with cached data that is purged only as necessary. Since NPN_MemAlloc automatically frees cached information if necessary to fulfill a request for memory, calls to NPN_MemAlloc may succeed where direct calls to NewPtr fail. § The NPN_MemAlloc method has the following syntax:

void *NPN_MemAlloc (uint32 size);
The size parameter is an unsigned long integer that represents the amount of memory, in bytes, to allocate in Communicator's memory space. This function returns a pointer to the allocated memory or null if not enough memory is available.

The NPN_MemFree method deallocates a block of memory that was allocated using NPN_MemAlloc only. NPN_MemFree does not free memory allocated by other means.

void NPN_MemFree (void *ptr);
The ptr parameter represents a block of memory previously allocated using NPN_MemAlloc.

[Top] [Allocating and Freeing Memory]


Flushing Memory (Mac OS only)

The NPN_MemFlush method frees a specified amount of memory. Normally, plug-ins should use NPN_MemAlloc, which automatically frees nonessential memory if necessary to fulfill the request. For Communicator 4.0 and later versions, this function is not necessary for the Mac OS platform; NPN_MemAlloc now performs memory flushing internally. You need to use NPN_MemFlush only when it is not possible to call NPN_MemAlloc, for example, when calling system methods that allocate memory indirectly. If NPN_MemAlloc is called, calls to NPN_MemFlush have no effect.

For example, suppose that the plug-in calls NewGWorld, and that the call fails because of insufficient memory. The plug-in should try calling NPN_MemFlush to free enough memory. If NPN_MemFlush returns a value indicating that enough memory was freed, the plug-in can call NewGWorld again. Calling NPN_MemFlush is particularly important to systems with small amounts of RAM and with virtual memory turned off.

To request that Communicator free as much memory as possible, call NPN_MemFlush repeatedly until it returns 0.

uint32 NPN_MemFlush(uint32 size);
The size parameter is an unsigned long integer that represents the amount of memory, in bytes, to free in Communicator's memory space. This function returns the amount of freed memory, in bytes, or 0 if no memory could be freed.

[Top] [Flushing Memory (Mac OS only)]


[Contents] [Previous] [Next] [Index]

Last Updated: 01/15/97 16:36:57


Copyright © 1997 Netscape Communications Corporation