skip to main content
Skip header Section
Small memory software: patterns for systems with limited memoryJanuary 2001
Publisher:
  • Addison-Wesley Longman Publishing Co., Inc.
  • 75 Arlington Street, Suite 300 Boston, MA
  • United States
ISBN:978-0-201-59607-6
Published:01 January 2001
Pages:
333
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. ACM
    Kratzer K and Böttcher A Using an RTSJ-compatible MVC pattern as basis for configurable event-driven real-time software Proceedings of the 8th International Workshop on Java Technologies for Real-Time and Embedded Systems, (8-15)
  2. Aleksy M, Gitzel R, Vollmar G, Fantana N, Stich C and Takizawa M (2008). Techniques for the efficient resource management of context-senstivie mobile applications and their utilization in industrial field service, Journal of Mobile Multimedia, 4:3, (200-209), Online publication date: 1-Oct-2008.
  3. ACM
    Harrison N and Avgeriou P Incorporating fault tolerance tactics in software architecture patterns Proceedings of the 2008 RISE/EFTS Joint International Workshop on Software Engineering for Resilient Systems, (9-18)
  4. Wang F, Wu S, Helian N, Parker M, Guo Y, Deng Y and Khare V (2007). Grid-Oriented Storage, IEEE Transactions on Computers, 56:4, (474-487), Online publication date: 1-Apr-2007.
  5. ACM
    Del Rosso C Reducing internal fragmentation in segregated free lists using genetic algorithms Proceedings of the 2006 international workshop on Workshop on interdisciplinary software engineering research, (57-60)
  6. Ahlgren R and Markkula J Design patterns and organisational memory in mobile application development Proceedings of the 6th international conference on Product Focused Software Process Improvement, (143-156)
  7. Mo L, Zhang H, Bu J and Chen C Speed optimization of a MPEG-4 software decoder based on ARM family cores Proceedings of the Second international conference on Image Analysis and Recognition, (383-390)
  8. Risi W and Rossi G (2004). An architectural pattern catalogue for mobile web information systems, International Journal of Mobile Communications, 2:3, (235-247), Online publication date: 1-Sep-2004.
  9. ACM
    Burge M Pervasive computing in the undergraduate curriculum Proceedings of the 35th SIGCSE technical symposium on Computer science education, (181-182)
  10. ACM
    Burge M (2004). Pervasive computing in the undergraduate curriculum, ACM SIGCSE Bulletin, 36:1, (181-182), Online publication date: 1-Mar-2004.
  11. ACM
    Schmidt D, Gokhale A and Natarajan B (2004). Leveraging Application Frameworks, Queue, 2:5, (66-75), Online publication date: 1-Jul-2004.
  12. Schmidt D and Buschmann F Patterns, frameworks, and middleware Proceedings of the 25th International Conference on Software Engineering, (694-704)
  13. ACM
    Manolescu D and Santamarina G Java thin clients revisited Companion of the 17th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (34-35)
Contributors
  • The Australian National University
  • Lancaster University

Recommendations

Marc Paquette

Small memory software deals exclusively with design patterns that limit the amount of memory used by a software system. As Noble and Weir describe, the motive for optimizing memory usage depends on the system to which these patterns are applied to. A programmer developing software for an inexpensive portable device with a fixed amount memory has an obvious need for such techniques. A large transaction processing system can also take advantage of these patterns to improve the system's capacity to process and store transactions. This book effectively makes use of the conventions used in describing patterns in software development that the "Gang of Four" [1] established. A software development pattern is the classification and description of an object-oriented solution that has proven to be effective. Following this convention, each pattern in the book is presented with a name, the problem it solves, the conditions under which programmers typically apply it, the forces that it resolves and exposes, rules for applying the pattern, and examples of its implementation, including source code examples in Java, C++, and, occasionally, Smalltalk. A good overview is provided in the introduction and appendix to help the reader choose an appropriate pattern. The appendix provides force details. A pattern's forces are especially relevant when designing a system in order to use as little memory as possible. There are important compromises in performance, power usage, reliability, and implementation costs to consider. Noble and Weir make a strong effort to present these forces, not only describing them in depth, but offering a convenient table of patterns and forces to make it easy to compare them. The book's patterns are organized into five major sections. Each section presents a set of related patterns. The first section presents patterns that manage memory for an entire system, including patterns to prevent system failure when memory allocation fails, and patterns to manage read-only memory. The patterns in the next section manage memory in secondary storage. These patterns solve problems for using, for example, disk or flash memory in concert with primary read/write memory. Examples include the packages, pattern, and the paging pattern (also known as virtual memory). Section 3 presents compression patterns. This section only describes three major types of compression techniques; going further would require several more books to cover this complex subject. The list of relevant references gives the reader more in-depth guidance. Section 4 offers patterns that reduce the amount of memory used in data structures. These patterns include tricks for sharing copies of the same data. The fifth section of patterns provides techniques for memory allocation schemes, including fixed allocation, reference counting, and automatic garbage collection. Again, this is a complex subject (perhaps even controversial), and deep discussion is beyond the scope of the book. Thankfully, again, the book's excellent list of references saves the day. Throughout the book, Noble and Weir refer to a fictional strap-it-on computer system to provide examples of how these patterns might be applied. They only give brief mentions of actual memory-constrained systems that use the same patterns. I would have preferred replacing all mention of the strap-it-on system with more in-depth descriptions of patterns implemented on actual systems. Still, this book is well organized, comprehensive, and clearly written. It offers good examples, has a good index, and fills out its subject matter with an extensive list of references. Noble and Weir take good advantage of design pattern conventions to present a complex, broad view of the subject. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.