TweetFollow Us on Twitter

January 93 - OOPC Memory Management

OOPC Memory Management

Gary Odom

The November 1992 issue of Frameworks had an article by Jeff Alger about memory management in C++ with MacApp. Presented as a contrast to that article, this article describes memory management with OOPC.

Programming with objects involves allocating thousands of blocks. By the time the base classes in OOPC have been initialized, 7000 blocks have been allocated. Within a few minutes of working with a document, 20,000 blocks or more have been allocated. This is typical of object-oriented applications.

Macintosh Memory Management

The top-priority design goal for Macintosh memory management was to fully utilize available memory (space efficiency), even at the expense of other considerations, such as speed efficiency. This was sensible for the original Macintosh, a machine limited to 128 KB, but with relatively large memory demands. The chosen solution was to have relocatable blocks of memory, accessed using pointers to pointers, called handles.

The danger with handles is using them. To access a block, the handle must be dereferenced to its pointer. If the data is accessed a lot in a function, it is more efficient to dereference a handle to its pointer, and repeatedly use the pointer. The pointer is valid as long as the Memory Manager doesn't have a chance to move memory. But if you call any function, you have to know whether that function can move memory. If the function can move memory, you need to dereference the handle to get the pointer again. If memory is moved, the master pointer may change, making the pointer you were using invalid. The problem pointer is called a 'dangling pointer'.

Dangling pointers can be very hard to find, because memory may not move consistently (it depends on how tight memory is at the time). You could be writing into an invalid memory location and not discover a problem until much later. Dangling pointers are a debugging nightmare.

The Macintosh Memory Manager keeps track of every allocated block. This means memory management is optimized for a small number of blocks. With the relocatable block memory scheme, keeping track of a large number of moving blocks imposes significant overhead. This penalty is paid most in trying to allocate non-relocatable (pointer) blocks. To maintain efficient memory use, the Memory Manager always tries to allocate a non-relocatable block toward the bottom or top of the heap, so it won't get in the way during a memory shuffle. Finding space at the edge of the heap while a program is running typically involves a major memory move.

The result is that Memory Manager allocation time per block is distinctly non-linear. While handle allocation drags its tail, the time needed to allocate non-relocatable blocks is atrocious. Chart 1 below illustrates block allocation times in ticks (a tick is 1/60th of a second).

So, the Macintosh Memory Manager optimizes memory usage, but at a significant cost in speed, and with danger lurking in the form of dangling pointers.

OOPC Low-Level Memory Management

OOPC has its own memory manager, using pointers. This avoids the dangling pointer problem caused by using handles. The OOPC memory manager grabs a large chunk of memory from the heap, then slices it up for use. The first chunk is 128 KB. Other chunks are as big as needed, but at least 32 KB. (Chunk sizes are adjustable by an OOPC programmer). Chunks are locked at the top of the heap so they don't get in the way of operating system memory management. Chunks are allocated and freed as needed.

The result is pointer block allocation that does not fragment the heap. Because empty space is managed, not allocated blocks, allocation time is linear. Chart 2 below compares OOPC memory management times to Macintosh Memory Manager times. The times shown are for allocation and deallocation.At 20,000 blocks, OOPC is 20 times faster than Mac OS handles, and 100 times faster than Mac OS pointers.

Low-level memory management is implemented in OOPC using platform-independent functions, such as get_block and free_block. Handle functions (such as get_handle and free_handle) are also supported (using the Mac OS Memory Manager for the Mac version of OOPC). The OS requires handles for resources and some other tasks (such as color pixel maps).

Low-level memory management is only occasionally called directly (by an application programmer). More often, objects are created and released. (Of course, internal methods rely upon low-level memory management.) Let's look at how objects are allocated and deallocated in OOPC.

OOPC Object Memory Management

OOPC object memory management is quite simple. There are six functions/methods involved: new_object (a function), and new, bind, trash, release and empty (all methods).

The new_object function call creates an object, allocating a small amount memory required for all objects (36 bytes), plus any application data the object keeps. new_object calls the new function, which dispatches to an initial data assignment method (the method depends on the class of the object being created). After the new method finishes, an object is fully allocated and initialized.

Some objects need to keep track of other objects. A document object, for example, owns the window object that displays the document. A document object also keeps track of the pages in the document. These links between objects must be maintained.

OOPC's object system has built-in support for maintaining object links. Links between objects are established by calling bind(thisobject, thatobject). By this call, thatobject has created a link (or bond) to thisobject. thisobject cannot be released until thatobject trashes the bond between the objects by calling trash(thisobject, thatobject). Once all links to an object are trashed, the object is released by a trash (or release) call. Using bind and trash functions provides simple garbage collection, preventing objects from being released prematurely (and risking access to 'dead' objects).

release releases an object, but only if there are no links to other objects. When an object is released, empty is called (by release) to deallocate any data allocated in the new method. The release method disposes of the object itself.

Conclusion

Having its own low-level memory management gives a significant speed boost to OOPC-built applications and keeps programming chores simple. At the high level, built-in support for object linking provides garbage collection and safety with object access.
 
AAPL
$116.57
Apple Inc.
+0.26
MSFT
$48.70
Microsoft Corpora
+0.00
GOOG
$538.89
Google Inc.
+4.06

MacTech Search:
Community Search:

Software Updates via MacUpdate

Cyberduck 4.6 - FTP and SFTP browser. (F...
Cyberduck is a robust FTP/FTP-TLS/SFTP browser for the Mac whose lack of visual clutter and cleverly intuitive features make it easy to use. Support for external editors and system technologies such... Read more
Maya 2015 - Professional 3D modeling and...
Maya is an award-winning software and powerful, integrated 3D modeling, animation, visual effects, and rendering solution. Because Maya is based on an open architecture, all your work can be scripted... Read more
Evernote 6.0.1 - Create searchable notes...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
calibre 2.11 - Complete e-library manage...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital... Read more
Herald 5.0.1 - Notification plugin for M...
Note: Versions 2.1.3 (for OS X 10.7), 3.0.6 (for OS X 10.8), and 4.0.8 (for OS X 10.9) are no longer supported by the developer. Herald is a notification plugin for Mail.app, Apple's Mac OS X email... Read more
Firetask 3.7 - Innovative task managemen...
Firetask uniquely combines the advantages of classical priority-and-due-date-based task management with GTD. Stay focused and on top of your commitments - Firetask's "Today" view shows all relevant... Read more
TechTool Pro 7.0.6 - Hard drive and syst...
TechTool Pro is now 7, and this is the most advanced version of the acclaimed Macintosh troubleshooting utility created in its 20-year history. Micromat has redeveloped TechTool Pro 7 to be fully 64... Read more
PhotoDesk 3.0.1 - Instagram client for p...
PhotoDesk lets you view, like, comment, and download Instagram pictures/videos! (NO Uploads! / Image Posting! Instagram forbids that! AND you *need* an *existing* Instagram account). But you can do... Read more
SuperDuper! 2.7.3 - Advanced disk clonin...
SuperDuper! is an advanced, yet easy to use disk copying program. It can, of course, make a straight copy, or "clone" -- useful when you want to move all your data from one machine to another, or do... Read more
MacJournal 6.1.5 - Create, maintain, and...
MacJournal is the world's most popular journaling software for the Mac. MacJournal 6 adds a calendar mode that show entries from any journal, geolocation, word count, and progress tracking, as well... Read more

Latest Forum Discussions

See All

Quest for Revenge (Games)
Quest for Revenge 1.0.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.0 (iTunes) Description: The great Kingdom of the west has fallen. The gods ignore the prayers of the desperate. A dark warlord has extinguished... | Read more »
Threadz is a New Writing Adventure for Y...
Threadz is a New Writing Adventure for You and Your Friends Posted by Jessica Fisher on November 21st, 2014 [ permalink ] In the tradition of round-robin storytelling, | Read more »
SteelSeries Stratus XL Hardware Review
Made by: SteelSeries Price: $59.99 Hardware/iOS Integration Rating: 4 out of 5 stars Usability Rating: 4.5 out of 5 stars Reuse Value Rating: 4.25 out of 5 stars Build Quality Rating: 4.5 out of 5 stars Overall Rating: 4.31 out of 5 stars | Read more »
ACDSee (Photography)
ACDSee 1.0.0 Device: iOS iPhone Category: Photography Price: $1.99, Version: 1.0.0 (iTunes) Description: Capture, perfect, and share your photos with ACDSee. The ACDSee iPhone app combines an innovative camera, a powerful photo... | Read more »
ProTube for YouTube (Entertainment)
ProTube for YouTube 2.0.2 Device: iOS Universal Category: Entertainment Price: $1.99, Version: 2.0.2 (iTunes) Description: ProTube is the ultimate, fully featured YouTube app. With it's highly polished design, ProTube offers ad-free... | Read more »
Weather or Not - Reports and Forecasts...
Weather or Not - Reports and Forecasts for your Calendar 1.0.0 Device: iOS iPhone Category: Weather Price: $2.99, Version: 1.0.0 (iTunes) Description: Weather or Not is a beautiful and intuitive way to check the weather and... | Read more »
Sago Mini Road Trip (Education)
Sago Mini Road Trip 1.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0 (iTunes) Description: Go for a fun-filled drive with Jinja the cat. Pick a destination, select a vehicle and hit the road. What will Jinja... | Read more »
New Tower Defense Game, Kingdom Rush: Or...
New Tower Defense Game, Kingdom Rush: Origins, is Available Today Posted by Jessica Fisher on November 20th, 2014 [ permalink ] iPad Only App - Designed for the iPad | Read more »
Sunburn! (Games)
Sunburn! 1.0.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.0 (iTunes) Description: Your ship is gone. Your crew is scattered. One option remains. Gather your crew... and jump into the sun. Reunite your... | Read more »
Tapventures Review
Tapventures Review By Jennifer Allen on November 20th, 2014 Our Rating: :: ODDLY COMPELLINGUniversal App - Designed for iPhone and iPad Tapventures is an increasingly hands-off one-tap RPG, but expect it to hook you despite your... | Read more »

Price Scanner via MacPrices.net

Apple Expected to Reverse Nine-Month Tablet S...
Apple and Samsung combined accounted for 62 percent of the nearly 36 million branded tablets shipped in 3Q 2014, according to early vendor shipment share estimates from market intelligence firm ABI... Read more
Stratos: 30 Percent of US Smartphone Owners t...
Stratos, Inc., creator of the Bluetooth Connected Card Platform, has announced results from its 2014 Holiday Mobile Payments Survey. The consumer survey found that nearly one out of three (30 percent... Read more
64GB iPod touch on sale for $249, save $50
Best Buy has the 64GB iPod touch on sale for $249 on their online store for a limited time. Their price is $50 off MSRP. Choose free shipping or free local store pickup (if available). Sale price for... Read more
15″ 2.2GHz Retina MacBook Pro on sale for $17...
 B&H Photo has the 2014 15″ 2.2GHz Retina MacBook Pro on sale for $1799.99 for a limited time. Shipping is free, and B&H charges NY sales tax only. B&H will also include free copies of... Read more
New Logitech AnyAngle Case/Stand Brings Flexi...
Logitec has announced the newest addition to its suite of tablet products — the Logitech AnyAngle. A protective case with an any-angle stand for iPad Air 2 and all iPad mini models, AnyAngle is the... Read more
2013 15-inch 2.0GHz Retina MacBook Pro availa...
B&H Photo has leftover previous-generation 15″ 2.0GHz Retina MacBook Pros available for $1499 including free shipping plus NY sales tax only. Their price is $500 off original MSRP. B&H will... Read more
16GB Retina iPad mini on sale today for $199,...
 Staples has 2nd generation 16GB Retina iPad minis on sale for $199 on their online store for a limited time. Their price is $100 off MSRP. Choose free shipping or free local store pickup (if... Read more
Developers Start Designing Apps for Apple Wat...
Apple has announced the availability of WatchKit, software that gives developers a set of tools to easily create experiences designed specifically for Apple Watch. Apple’s developer community can now... Read more
C Spire Launches iPad Air 2 and iPad Mini 3 o...
C Spire has announced that iPad Air 2 with Wi-Fi + Cellular and iPad mini 3 with Wi-Fi + Cellular are now available on its 4G LTE network. C Spire offers both new iPads with a range of data plans... Read more
Are You On Your Last PC? – The ‘Book Mystique
Will your current PC be your last? Quite possibly so if you define “personal computer” as a traditional desktop or laptop form factor machine according to some commentators. So then, the upshot that... Read more

Jobs Board

*Apple* Solutions Consultant (ASC)- Retail S...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
Project Manager, *Apple* Financial Services...
**Job Summary** Apple Financial Services (AFS) offers consumers, businesses and educational institutions ways to finance Apple purchases. We work with national and Read more
*Apple* Store Leader Program - College Gradu...
Job Description: Job Summary As an Apple Store Leader Program agent, you can continue your education as you major in the art of leadership at the Apple Store. You'll Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Senior Event Manager, *Apple* Retail Market...
…This senior level position is responsible for leading and imagining the Apple Retail Team's global event strategy. Delivering an overarching brand story; in-store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.