{"id":{"repo_id":"mit","oai_identifier":"oai:dspace.mit.edu:1721.1/33297"},"canonical_url":"https://search.dev.ndltd.org/etd/mit/oai:dspace.mit.edu:1721.1/33297","repository":{"repo_id":"mit","name":"MIT","base_url":"https://dspace.mit.edu/oai/request"},"display":{"title":"An empirical study of a novel technique : rationed-memory compiling","abstract":"We present rationed-memory compiling, a new technique designed to reduce the memory consumption of programs. The technique lowers memory usage by decreasing the amount of memory that programs allocate, but not use actively. With rationed- memory compiling, whenever a program requests a memory block, the compiler returns a block smaller than the requested size. The compiler handles subsequent reads and writes to the memory block as usual if the accessed location is within the allocated block. If the accessed location is outside the allocated block, the compiler redirects the access to a hash table which stores and indexes out-of-bounds writes and returns the stored values on out-of-bounds reads from corresponding locations. For programs that over-allocate memory, the compiler yields savings because it allocates smaller memory blocks, while it also provides backup storage in the hash table for the writes outside the allocated blocks. We developed a C compiler that implements the rationed-memory technique and tested it on a series of programs that use a diverse range of data structures. Our tests show that the rationed-memory technique is very effective in reducing the memory usage of data structures implemented using arrays or buffers, such as stacks or queues. Furthermore, our study presents cases of over-allocation of memory in open-source applications, supporting our claim that the rationed-memory technique is a versatile tool with a great potential of reducing the memory consumption of programs.","abstract_html":"We present rationed-memory compiling, a new technique designed to reduce the memory consumption of programs. The technique lowers memory usage by decreasing the amount of memory that programs allocate, but not use actively. With rationed- memory compiling, whenever a program requests a memory block, the compiler returns a block smaller than the requested size. The compiler handles subsequent reads and writes to the memory block as usual if the accessed location is within the allocated block. If the accessed location is outside the allocated block, the compiler redirects the access to a hash table which stores and indexes out-of-bounds writes and returns the stored values on out-of-bounds reads from corresponding locations. For programs that over-allocate memory, the compiler yields savings because it allocates smaller memory blocks, while it also provides backup storage in the hash table for the writes outside the allocated blocks. We developed a C compiler that implements the rationed-memory technique and tested it on a series of programs that use a diverse range of data structures. Our tests show that the rationed-memory technique is very effective in reducing the memory usage of data structures implemented using arrays or buffers, such as stacks or queues. Furthermore, our study presents cases of over-allocation of memory in open-source applications, supporting our claim that the rationed-memory technique is a versatile tool with a great potential of reducing the memory consumption of programs.","abstract_has_math":false,"creators":["Leu, Ioan Tudor"],"institution":"Massachusetts Institute of Technology","degree_name":null,"degree_level":null,"degree_discipline":null,"degree_department":"Massachusetts Institute of Technology. Dept. of Electrical Engineering and Computer Science.","school":null,"contributors":[],"advisors":["Martin Rinard."],"committee_chairs":[],"committee_members":[],"year":2005,"date_issued":"2005","date_published":"2005","updated_at":"2026-07-22T22:21:30Z","subjects":["Electrical Engineering and Computer Science."],"languages":["eng"],"rights":["M.I.T. theses are protected by copyright. They may be viewed from this source for any purpose, but reproduction or distribution in any format is prohibited without written permission. See provided URL for inquiries about permission."],"rights_urls":["http://dspace.mit.edu/handle/1721.1/7582"],"identifier_entries":[]},"links":{"outbound_url":"http://hdl.handle.net/1721.1/33297","outbound_label":"Handle","outbound_source":"dc:identifier.uri"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor.advisor","label":"Advisor","values":["Martin Rinard."]},{"key":"dc:contributor.department","label":"Department","values":["Massachusetts Institute of Technology. Dept. of Electrical Engineering and Computer Science."]},{"key":"dc:contributor.other","label":"Dc Contributor Other","values":["Massachusetts Institute of Technology. Dept. of Electrical Engineering and Computer Science."]},{"key":"dc:creator","label":"Author","values":["Leu, Ioan Tudor"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.accessioned","label":"Dc Date Accessioned","values":["2006-07-13T15:13:23Z"]},{"key":"dc:date.available","label":"Dc Date Available","values":["2006-07-13T15:13:23Z"]},{"key":"dc:date.issued","label":"Date","values":["2005"]},{"key":"dc:publisher","label":"Institution","values":["Massachusetts Institute of Technology"]},{"key":"dc:type","label":"Dc Type","values":["Thesis"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["Electrical Engineering and Computer Science."]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language.iso","label":"Language (ISO)","values":["eng"]},{"key":"dc:rights","label":"Dc Rights","values":["M.I.T. theses are protected by copyright. They may be viewed from this source for any purpose, but reproduction or distribution in any format is prohibited without written permission. See provided URL for inquiries about permission."]},{"key":"dc:rights.uri","label":"Rights URI","values":["http://dspace.mit.edu/handle/1721.1/7582"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier.uri","label":"Identifier URI","values":["http://hdl.handle.net/1721.1/33297"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description","label":"Description","values":["Thesis (M. Eng.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 2005.","Includes bibliographical references (p. 61-63)."]},{"key":"dc:description.abstract","label":"Abstract","values":["We present rationed-memory compiling, a new technique designed to reduce the memory consumption of programs. The technique lowers memory usage by decreasing the amount of memory that programs allocate, but not use actively. With rationed- memory compiling, whenever a program requests a memory block, the compiler returns a block smaller than the requested size. The compiler handles subsequent reads and writes to the memory block as usual if the accessed location is within the allocated block. If the accessed location is outside the allocated block, the compiler redirects the access to a hash table which stores and indexes out-of-bounds writes and returns the stored values on out-of-bounds reads from corresponding locations. For programs that over-allocate memory, the compiler yields savings because it allocates smaller memory blocks, while it also provides backup storage in the hash table for the writes outside the allocated blocks. We developed a C compiler that implements the rationed-memory technique and tested it on a series of programs that use a diverse range of data structures. Our tests show that the rationed-memory technique is very effective in reducing the memory usage of data structures implemented using arrays or buffers, such as stacks or queues. Furthermore, our study presents cases of over-allocation of memory in open-source applications, supporting our claim that the rationed-memory technique is a versatile tool with a great potential of reducing the memory consumption of programs."]},{"key":"dc:description.degree","label":"Dc Description Degree","values":["M.Eng."]},{"key":"dc:format.mimetype","label":"Dc Format Mimetype","values":["application/pdf"]},{"key":"dc:title","label":"Title","values":["An empirical study of a novel technique : rationed-memory compiling"]}]}],"canonical_facts":{"dc:contributor.advisor":["Martin Rinard."],"dc:contributor.department":["Massachusetts Institute of Technology. Dept. of Electrical Engineering and Computer Science."],"dc:contributor.other":["Massachusetts Institute of Technology. Dept. of Electrical Engineering and Computer Science."],"dc:creator":["Leu, Ioan Tudor"],"dc:date.accessioned":["2006-07-13T15:13:23Z"],"dc:date.available":["2006-07-13T15:13:23Z"],"dc:date.issued":["2005"],"dc:description":["Thesis (M. Eng.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 2005.","Includes bibliographical references (p. 61-63)."],"dc:description.abstract":["We present rationed-memory compiling, a new technique designed to reduce the memory consumption of programs. The technique lowers memory usage by decreasing the amount of memory that programs allocate, but not use actively. With rationed- memory compiling, whenever a program requests a memory block, the compiler returns a block smaller than the requested size. The compiler handles subsequent reads and writes to the memory block as usual if the accessed location is within the allocated block. If the accessed location is outside the allocated block, the compiler redirects the access to a hash table which stores and indexes out-of-bounds writes and returns the stored values on out-of-bounds reads from corresponding locations. For programs that over-allocate memory, the compiler yields savings because it allocates smaller memory blocks, while it also provides backup storage in the hash table for the writes outside the allocated blocks. We developed a C compiler that implements the rationed-memory technique and tested it on a series of programs that use a diverse range of data structures. Our tests show that the rationed-memory technique is very effective in reducing the memory usage of data structures implemented using arrays or buffers, such as stacks or queues. Furthermore, our study presents cases of over-allocation of memory in open-source applications, supporting our claim that the rationed-memory technique is a versatile tool with a great potential of reducing the memory consumption of programs."],"dc:description.degree":["M.Eng."],"dc:format.mimetype":["application/pdf"],"dc:identifier.uri":["http://hdl.handle.net/1721.1/33297"],"dc:language.iso":["eng"],"dc:publisher":["Massachusetts Institute of Technology"],"dc:rights":["M.I.T. theses are protected by copyright. They may be viewed from this source for any purpose, but reproduction or distribution in any format is prohibited without written permission. See provided URL for inquiries about permission."],"dc:rights.uri":["http://dspace.mit.edu/handle/1721.1/7582"],"dc:subject":["Electrical Engineering and Computer Science."],"dc:title":["An empirical study of a novel technique : rationed-memory compiling"],"dc:type":["Thesis"]},"updated_at":"2026-07-22T22:21:30Z"}