def memoryFreeingThreadLoop(queue): while True: element = queue.get() if element == "exit": return address, event = element TCMallocNative.freeAtAddress(address) event.set()
def test_realloc(self): #verify that TCMalloc accounts for resizing correctly measurements = [TCMallocNative.getBytesUsed()] for ix in range(10): addr = TCMallocNative.mallocAndReturnAddress(10 * 1024 * 1024) addr = TCMallocNative.reallocAtAddress(addr, 20 * 1024 * 1024) measurements.append(TCMallocNative.getBytesUsed()) addr = TCMallocNative.reallocAtAddress(addr, 10 * 1024 * 1024) addr = TCMallocNative.reallocAtAddress(addr, 5 * 1024 * 1024) TCMallocNative.freeAtAddress(addr) measurements.append(TCMallocNative.getBytesUsed()) self.assertTrue( measurements[-1] < measurements[0] + 10 * 1024 * 1024, "Expected %s to be less than 10 MB larger than %s" % (measurements[-1], measurements[0]))
def test_realloc(self): #verify that TCMalloc accounts for resizing correctly measurements = [TCMallocNative.getBytesUsed()] for ix in range(10): addr = TCMallocNative.mallocAndReturnAddress(10 * 1024 * 1024) addr = TCMallocNative.reallocAtAddress(addr, 20 * 1024 * 1024) measurements.append(TCMallocNative.getBytesUsed()) addr = TCMallocNative.reallocAtAddress(addr, 10 * 1024 * 1024) addr = TCMallocNative.reallocAtAddress(addr, 5 * 1024 * 1024) TCMallocNative.freeAtAddress(addr) measurements.append(TCMallocNative.getBytesUsed()) self.assertTrue( measurements[-1] < measurements[0] + 10 * 1024 * 1024, "Expected %s to be less than 10 MB larger than %s" % (measurements[-1], measurements[0]) )