A programming principle that ties resource management to lifetime of objects. Resources acquired once object created, released when object is destroyed