diff --git a/go-slang/src/integrationTests/basicMultiThread.test.ts b/go-slang/src/integrationTests/basicMultiThread.test.ts index cd108c1..408ac74 100644 --- a/go-slang/src/integrationTests/basicMultiThread.test.ts +++ b/go-slang/src/integrationTests/basicMultiThread.test.ts @@ -38,7 +38,8 @@ func foo(y int) { `; test.concurrent("should execute correctly", async () => { - let { log, state, getId, getPC, prog } = setUpMultiThreadedTest(progStr); + let { log, state, getId, getPC, prog, getMemory } = + setUpMultiThreadedTest(progStr); const maxInstrExecutions = 2 * 10000; const pcExecutionOrder: Record = {}; const osState: Record = {}; @@ -78,14 +79,11 @@ func foo(y int) { console.dir(printLast(getId(), 100, 20)); throw e; } - - // const _memUsage = `${getMemory().getMemoryUsed()} / ${getMemory().getMemorySize()}`; - // const _memResidency = `${getMemory().getMemoryResidency()} / ${getMemory().getMemorySize()}`; - // console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency }); } - // console.dir(lastHundredInstr); - expect(Object.keys(log)).toHaveLength(1 + /* getFn */ 100 + /* foo */ 1); + expect(Object.keys(log)).toHaveLength( + 1 + /* getFn */ 100 + /* foo */ 1 + /*GC*/ 1 + ); const mainId = state.machineState.MAIN_ID; const otherIdsAndPc = Object.keys(log) diff --git a/go-slang/src/integrationTests/basicSingleThread.test.ts b/go-slang/src/integrationTests/basicSingleThread.test.ts index c101ab2..6cfa803 100644 --- a/go-slang/src/integrationTests/basicSingleThread.test.ts +++ b/go-slang/src/integrationTests/basicSingleThread.test.ts @@ -42,7 +42,7 @@ func foo(y int) { describe("basic single threaded program", () => { it("should execute correctly", () => { - let { log, state, getPC, prog } = setUpTest(progStr); + let { log, state, getPC, prog, getMemory } = setUpTest(progStr); const pcExecutionOrder: number[] = []; const maxInstrExecutions = 2 * 1200; @@ -74,11 +74,10 @@ describe("basic single threaded program", () => { throw e; } - // const _memUsage = `${getMemory().getMemoryUsed()} / ${getMemory().getMemorySize()}`; + // const _memUsage = `${getMemory().getMemoryAllocated()} / ${getMemory().getMemorySize()}`; // const _memResidency = `${getMemory().getMemoryResidency()} / ${getMemory().getMemorySize()}`; // console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency }); } - expect(log[state.mainThreadId]).toEqual([ "1", "3", diff --git a/go-slang/src/integrationTests/channels.test.ts b/go-slang/src/integrationTests/channels.test.ts index 15d328a..22d3216 100644 --- a/go-slang/src/integrationTests/channels.test.ts +++ b/go-slang/src/integrationTests/channels.test.ts @@ -37,7 +37,7 @@ func main() { // const _memResidency = `${getMemory().getMemoryResidency()} / ${getMemory().getMemorySize()}`; // console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency }); } - expect(Object.keys(log)).toHaveLength(2); + expect(Object.keys(log)).toHaveLength(3); let barId = Object.keys(log).filter( (id) => id !== state.machineState.MAIN_ID diff --git a/go-slang/src/integrationTests/utils.ts b/go-slang/src/integrationTests/utils.ts index 93a94dd..ef8fe10 100644 --- a/go-slang/src/integrationTests/utils.ts +++ b/go-slang/src/integrationTests/utils.ts @@ -5,7 +5,7 @@ import { initializeVirtualMachine } from "../virtual_machine"; export const setUpTest = (progStr: string) => { const log: Record = {}; const prog = compileParsedProgram(parse(progStr)); - let state = initializeVirtualMachine(prog, (2 ** 8) ** 2, (ctx, s) => { + let state = initializeVirtualMachine(prog, (2 ** 6) ** 2, (ctx, s) => { const pushLog = (id: string, s: string) => { if (!log[id]) log[id] = []; log[id].push(s); diff --git a/go-slang/src/integrationTests/waitgroup.test.ts b/go-slang/src/integrationTests/waitgroup.test.ts index a8f5b57..acd9c1d 100644 --- a/go-slang/src/integrationTests/waitgroup.test.ts +++ b/go-slang/src/integrationTests/waitgroup.test.ts @@ -58,7 +58,7 @@ func main() { // console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency }); } - expect(Object.keys(log)).toHaveLength(6); + expect(Object.keys(log)).toHaveLength(7); const mainId = state.machineState.MAIN_ID; // console.dir(printLast(mainId, 100, 20)); @@ -135,7 +135,7 @@ func main() { // console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency }); } - expect(Object.keys(log)).toHaveLength(6); + expect(Object.keys(log)).toHaveLength(7); const mainId = state.machineState.MAIN_ID; // console.dir(printLast(mainId, 100, 20)); diff --git a/scripts/memGraph.py b/scripts/memGraph.py new file mode 100644 index 0000000..06e84b4 --- /dev/null +++ b/scripts/memGraph.py @@ -0,0 +1,237 @@ +import matplotlib.pyplot as plt + +memUsages =[ + 177, 179, 179, 181, 184, 185, 186, 186, 188, 188, 190, 193, + 194, 195, 195, 197, 197, 199, 202, 203, 204, 204, 206, 206, + 208, 211, 212, 213, 213, 215, 215, 217, 220, 221, 222, 222, + 224, 224, 226, 229, 230, 231, 231, 233, 233, 235, 238, 239, + 240, 240, 242, 242, 244, 247, 248, 249, 249, 251, 251, 253, + 256, 257, 258, 258, 260, 260, 262, 265, 266, 267, 267, 269, + 269, 271, 274, 275, 276, 276, 278, 278, 280, 283, 284, 285, + 285, 287, 287, 289, 292, 293, 294, 294, 296, 296, 298, 301, + 302, 303, 303, 305, 305, 307, 310, 311, 312, 312, 314, 314, + 316, 319, 320, 321, 321, 323, 323, 325, 328, 329, 330, 330, + 332, 332, 334, 337, 338, 339, 339, 341, 341, 343, 346, 347, + 348, 348, 350, 350, 352, 355, 356, 357, 357, 359, 359, 361, + 364, 365, 366, 366, 368, 368, 370, 373, 374, 375, 375, 377, + 377, 379, 382, 383, 384, 384, 386, 386, 388, 391, 392, 393, + 393, 395, 395, 397, 400, 401, 402, 402, 404, 404, 406, 409, + 410, 411, 411, 413, 413, 415, 418, 419, 420, 420, 422, 422, + 424, 427, 428, 429, 429, 431, 431, 433, 436, 437, 438, 438, + 440, 440, 442, 445, 446, 447, 447, 449, 449, 451, 454, 455, + 456, 456, 458, 458, 460, 463, 464, 465, 465, 467, 467, 469, + 472, 473, 474, 474, 476, 476, 478, 481, 482, 483, 483, 485, + 485, 487, 490, 491, 492, 492, 502, 504, 504, 506, 506, 508, + 511, 512, 513, 513, 515, 515, 517, 520, 521, 522, 522, 523, + 547, 563, 565, 565, 567, 567, 569, 569, 571, 574, 575, 576, + 576, 578, 578, 580, 583, 584, 585, 585, 587, 588, 589, 589, + 590, 614, 615, 617, 618, 619, 619, 619, 619, 621, 622, 647, + 657, 659, 660, 661, 663, 663, 665, 665, 666, 667, 669, 670, + 671, 671, 672, 674, 675, 677, 677, 678, 679, 680, 705, 706, + 706, 706, 706, 708, 709, 711, 712, 737, 371, 373, 374, 375, + 377, 377, 379, 379, 380, 381, 383, 384, 385, 385, 386, 388, + 389, 391, 391, 392, 393, 394, 419, 420, 420, 420, 420, 422, + 423, 425, 426, 451, 461, 463, 464, 465, 467, 467, 469, 469, + 470, 471, 473, 474, 475, 475, 476, 478, 479, 481, 481, 482, + 483, 484, 509, 510, 510, 510, 510, 512, 513, 515, 516, 541, + 551, 553, 554, 555, 557, 557, 559, 559, 560, 561, 563, 564, + 565, 565, 566, 568, 569, 571, 571, 572, 573, 574, 599, 600, + 600, 600, 600, 602, 603, 605, 606, 631, 641, 643, 644, 645, + 647, 647, 649, 649, 650, 651, 653, 654, 655, 655, 656, 658, + 659, 661, 661, 662, 663, 664, 689, 690, 690, 690, 690, 692, + 693, 695, 696, 721, 511, 513, 514, 515, 517, 517, 519, 519, + 520, 521, 523, 524, 525, 525, 526, 528, 529, 531, 531, 532, + 533, 534, 559, 560, 560, 560, 560, 562, 563, 565, 566, 591, + 601, 603, 604, 605, 607, 607, 609, 609, 610, 611, 613, 614, + 615, 615, 616, 618, 619, 621, 621, 621, 621, 622, 623, 625, + 626, 651, 652, 652, 652, 652, 654, 682, 682, 684, 686, 687, + 688, 688, 690, 691, 693, 693, 694, 696, 697, 699, 700, 701, + 701, 701, 701, 703, 704, 706, 707, 708, 708, 708, 710, 711, + 713, 713, 714, 716, 717, 579, 580, 582, 582, 582, 582, 584, + 585, 587, 588, 589, 589, 589, 591, 592, 594, 594, 595, 597, + 598, 602, 603, 606, 606, 606, 606, 608, 609, 611, 612, 613, + 613, 613, 615, 616, 618, 618, 620, 621, 621, 621, 622, 623, + 648, 649, 649, 649, 649, 650, 652, 653, 678, 679, 679, 679, + 679, 679, 679, 679, 679, 679, 679, 679, 680, 681, 683, 684, + 709, 710, 710, 710, 710, 712, 740, 538, 540, 542, 543, 544, + 544, 546, 547, 549, 549, 550, 552, 553, 555, 556, 557, 557, + 557, 557, 559, 560, 562, 563, 564, 564, 564, 566, 567, 569, + 569, 570, 572, 573, 576, 577, 579, 579, 579, 579, 581, 582, + 584, 585, 586, 586, 586, 588, 589, 591, 591, 592, 594, 595, + 599, 600, 603, 603, 603, 603, 605, 606, 608, 609, 610, 610, + 610, 612, 613, 615, 615, 617, 618, 618, 618, 619, 620, 645, + 646, 646, 646, 646, 647, 649, 650, 675, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 677, 678, 680, 681, 706, + 707, 707, 707, 707, 709, 737, 503, 505, 507, 508, 509, 509, + 511, 512, 514, 514, 515, 517, 518, 520, 521, 522, 522, 522, + 522, 524, 525, 527, 528, 529, 529, 529, 531, 532, 534, 534, + 535, 537, 538, 541, 542, 544, 544, 544, 544, 546, 547, 549, + 550, 551, 551, 551, 553, 554, 556, 556, 557, 559, 560, 564, + 565, 568, 568, 568, 568, 570, 571, 573, 574, 575, 575, 575, + 577, 578, 580, 580, 582, 583, 583, 583, 584, 585, 610, 611, + 611, 611, 611, 612, 614, 615, 640, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 642, 643, 645, 646, 671, 672, + 672, 672, 672, 674, 702, 702, 704, 706, 707, 708, 708, 710, + 711, 713, 713, 714, 716, 717, 473, 474, 475, 475, 475, 475, + 477, 478, 480, 481, 482, 482, 482, 484, 485, 487, 487, 488, + 490, 491, 494, 495, 497, 497, 497, 497, 499, 500, 502, 503, + 504, 504, 504, 506, 507, 509, 509, 510, 512, 513, 517, 518, + 521, 521, 521, 521, 523, 524, 526, 527, 528, 528, 528, 530, + 531, 533, 533, 535, 536, 536, 536, 537, 538, 563, 564, 564, + 564, 564, 565, 567, 568, 593, 594, 594, 594, 594, 594, 594, + 594, 594, 594, 594, 594, 595, 596, 598, 599, 624, 625, 625, + 625, 625, 627, 655, 655, 657, 659, 660, 661, 661, 663, 664, + 666, 666, 667, 669, 670, 672, 673, 674, 674, 674, 674, 676, + 677, 679, 680, 681, 681, 681, 683, 684, 686, 686, 687, 689, + 690, 693, 694, 696, 696, 696, 696, 698, 699, 701, 702, 703, + 703, 703, 705, 706, 708, 708, 709, 711, 712, 716, 717, 442, + 442, 442, 442, 444, 445, 447, 448, 449, 449, 449, 451, 452, + 454, 454, 456, 457, 457, 457, 458, 459, 484, 485, 485, 485, + 485, 486, 488, 489, 514, 515, 515, 515, 515, 515, 515, 515, + 515, 515, 515, 515, 516, 517, 519, 520, 545, 546, 546, 546, + 546, 548, 576, 576, 578, 580, 581, 582, 582, 584, 585, 587, + 587, 588, 590, 591, 593, 594, 595, 595, 595, 595, 597, 598, + 600, 601, 602, 602, 602, 604, 605, 607, 607, 608, 610, 611, + 614, 615, 617, 617, 617, 617, 619, 620, 622, 623, 624, 624, + 624, 626, 627, 629, 629, 630, 632, 633, 637, 638, 641, 641, + 641, 641, 643, 644, 646, 647, 648, 648, 648, 650, 651, 653, + 653, 655, 656, 656, 656, 657, 658, 683, 684, 684, 684, 684, + 685, 687, 688, 713, 714, 714, 714, 714, 714, 714, 714, 714, + 714, 714, 714, 715, 716, 718, 340, 365, 366, 366, 366, 366, + 368, 396, 396, 398, 400, 401, 402, 402, 404, 405, 407, 407, + 408, 410, 411, 413, 414, 415, 415, 415, 415, 417, 418, 420, + 421, 422, 422, 422, 424, 425, 427, 427, 428, 430, 431, 434, + 435, 437, 437, 437, 437, 439, 440, 442, 443, 444, 444, 444, + 446, 447, 449, 449, 450, 452, 453, 457, 458, 461, 461, 461, + 461, 463, 464, 466, 467, 468, 468, 468, 470, 471, 473, 473, + 475, 476, 476, 476, 477, 478, 503, 504, 504, 504, 504, 505, + 507, 508, 533, 534, 534, 534, 534, 534, 534, 536, 537, 538, + 538, 539, 541, 542, 567, 568, 568, 568, 568, 569, 570, 595, + 596, 596, 596, 596, 596, 596 + ] +memResidencies = [ + 177, 178, 178, 180, 182, 183, 179, 179, 180, 180, 182, 184, + 185, 181, 181, 182, 182, 184, 186, 187, 183, 183, 184, 184, + 186, 188, 189, 185, 185, 186, 186, 188, 190, 191, 187, 187, + 188, 188, 190, 192, 193, 189, 189, 190, 190, 192, 194, 195, + 191, 191, 192, 192, 194, 196, 197, 193, 193, 194, 194, 196, + 198, 199, 195, 195, 196, 196, 198, 200, 201, 197, 197, 198, + 198, 200, 202, 203, 199, 199, 200, 200, 202, 204, 205, 201, + 201, 202, 202, 204, 206, 207, 203, 203, 204, 204, 206, 208, + 209, 205, 205, 206, 206, 208, 210, 211, 207, 207, 208, 208, + 210, 212, 213, 209, 209, 210, 210, 212, 214, 215, 211, 211, + 212, 212, 214, 216, 217, 213, 213, 214, 214, 216, 218, 219, + 215, 215, 216, 216, 218, 220, 221, 217, 217, 218, 218, 220, + 222, 223, 219, 219, 220, 220, 222, 224, 225, 221, 221, 222, + 222, 224, 226, 227, 223, 223, 224, 224, 226, 228, 229, 225, + 225, 226, 226, 228, 230, 231, 227, 227, 228, 228, 230, 232, + 233, 229, 229, 230, 230, 232, 234, 235, 231, 231, 232, 232, + 234, 236, 237, 233, 233, 234, 234, 236, 238, 239, 235, 235, + 236, 236, 238, 240, 241, 237, 237, 238, 238, 240, 242, 243, + 239, 239, 240, 240, 242, 244, 245, 241, 241, 242, 242, 244, + 246, 247, 243, 243, 244, 244, 246, 248, 249, 245, 245, 246, + 246, 248, 250, 251, 247, 247, 257, 258, 258, 259, 259, 261, + 263, 264, 260, 260, 261, 261, 263, 265, 266, 262, 262, 264, + 283, 299, 300, 300, 301, 301, 302, 302, 304, 306, 307, 303, + 303, 304, 304, 306, 308, 309, 305, 305, 307, 308, 305, 305, + 307, 326, 327, 329, 330, 327, 327, 305, 305, 307, 307, 328, + 338, 339, 340, 337, 338, 338, 339, 339, 340, 341, 341, 342, + 339, 339, 340, 342, 343, 342, 340, 341, 342, 343, 363, 364, + 363, 341, 341, 343, 344, 343, 342, 364, 374, 375, 376, 373, + 374, 374, 375, 375, 376, 377, 377, 378, 375, 375, 376, 378, + 379, 378, 376, 377, 378, 379, 399, 400, 399, 377, 377, 379, + 380, 379, 377, 400, 410, 411, 412, 409, 410, 410, 411, 411, + 412, 413, 413, 414, 411, 411, 412, 414, 415, 414, 412, 413, + 414, 415, 435, 436, 435, 413, 413, 415, 416, 415, 412, 436, + 446, 447, 448, 445, 446, 446, 447, 447, 448, 449, 449, 450, + 447, 447, 448, 450, 451, 450, 448, 449, 450, 451, 471, 472, + 471, 449, 449, 451, 452, 451, 447, 472, 482, 483, 484, 481, + 482, 482, 483, 483, 484, 485, 485, 486, 483, 483, 484, 486, + 487, 486, 484, 485, 486, 487, 507, 508, 507, 485, 485, 487, + 488, 487, 482, 508, 518, 519, 520, 517, 518, 518, 519, 519, + 520, 521, 521, 522, 519, 519, 520, 522, 523, 522, 520, 521, + 522, 523, 543, 544, 543, 521, 521, 523, 524, 523, 517, 544, + 554, 555, 556, 553, 554, 554, 555, 555, 556, 557, 557, 558, + 555, 555, 556, 558, 559, 558, 556, 555, 555, 556, 557, 557, + 558, 578, 579, 577, 555, 555, 557, 582, 580, 581, 583, 584, + 581, 581, 583, 584, 583, 581, 582, 584, 585, 584, 585, 582, + 582, 581, 581, 583, 584, 583, 584, 581, 581, 581, 583, 584, + 583, 581, 582, 584, 585, 585, 586, 583, 583, 582, 582, 584, + 585, 584, 585, 582, 582, 582, 584, 585, 584, 582, 583, 585, + 586, 587, 588, 584, 584, 583, 583, 585, 586, 585, 586, 583, + 583, 583, 585, 586, 585, 583, 585, 559, 557, 557, 558, 559, + 579, 580, 579, 557, 557, 558, 559, 560, 580, 581, 579, 557, + 557, 521, 521, 520, 520, 520, 519, 519, 520, 521, 521, 522, + 542, 543, 541, 519, 519, 521, 546, 544, 545, 547, 548, 545, + 545, 547, 548, 547, 545, 546, 548, 549, 548, 549, 546, 546, + 545, 545, 547, 548, 547, 548, 545, 545, 545, 547, 548, 547, + 545, 546, 548, 549, 549, 550, 547, 547, 546, 546, 548, 549, + 548, 549, 546, 546, 546, 548, 549, 548, 546, 547, 549, 550, + 551, 552, 548, 548, 547, 547, 549, 550, 549, 550, 547, 547, + 547, 549, 550, 549, 547, 549, 523, 521, 521, 522, 523, 543, + 544, 543, 521, 521, 522, 523, 524, 544, 545, 543, 521, 521, + 485, 485, 484, 484, 484, 483, 483, 484, 485, 485, 486, 506, + 507, 505, 483, 483, 485, 510, 508, 509, 511, 512, 509, 509, + 511, 512, 511, 509, 510, 512, 513, 512, 513, 510, 510, 509, + 509, 511, 512, 511, 512, 509, 509, 509, 511, 512, 511, 509, + 510, 512, 513, 513, 514, 511, 511, 510, 510, 512, 513, 512, + 513, 510, 510, 510, 512, 513, 512, 510, 511, 513, 514, 515, + 516, 512, 512, 511, 511, 513, 514, 513, 514, 511, 511, 511, + 513, 514, 513, 511, 513, 487, 485, 485, 486, 487, 507, 508, + 507, 485, 485, 486, 487, 488, 508, 509, 507, 485, 485, 449, + 449, 448, 448, 448, 447, 447, 448, 449, 449, 450, 470, 471, + 469, 447, 447, 449, 474, 472, 473, 475, 476, 473, 473, 475, + 476, 475, 473, 474, 476, 477, 476, 477, 474, 474, 473, 473, + 475, 476, 475, 476, 473, 473, 473, 475, 476, 475, 473, 474, + 476, 477, 477, 478, 475, 475, 474, 474, 476, 477, 476, 477, + 474, 474, 474, 476, 477, 476, 474, 475, 477, 478, 479, 480, + 476, 476, 475, 475, 477, 478, 477, 478, 475, 475, 475, 477, + 478, 477, 475, 477, 451, 449, 449, 450, 451, 471, 472, 471, + 449, 449, 450, 451, 452, 472, 473, 471, 449, 449, 413, 413, + 412, 412, 412, 411, 411, 412, 413, 413, 414, 434, 435, 433, + 411, 411, 413, 438, 436, 437, 439, 440, 437, 437, 439, 440, + 439, 437, 438, 440, 441, 440, 441, 438, 438, 437, 437, 439, + 440, 439, 440, 437, 437, 437, 439, 440, 439, 437, 438, 440, + 441, 441, 442, 439, 439, 438, 438, 440, 441, 440, 441, 438, + 438, 438, 440, 441, 440, 438, 439, 441, 442, 443, 444, 440, + 440, 439, 439, 441, 442, 441, 442, 439, 439, 439, 441, 442, + 441, 439, 441, 415, 413, 413, 414, 415, 435, 436, 435, 413, + 413, 414, 415, 416, 436, 437, 435, 413, 413, 377, 377, 376, + 376, 376, 375, 375, 376, 377, 377, 378, 398, 399, 397, 375, + 375, 377, 402, 400, 401, 403, 404, 401, 401, 403, 404, 403, + 401, 402, 404, 405, 404, 405, 402, 402, 401, 401, 403, 404, + 403, 404, 401, 401, 401, 403, 404, 403, 401, 402, 404, 405, + 405, 406, 403, 403, 402, 402, 404, 405, 404, 405, 402, 402, + 402, 404, 405, 404, 402, 403, 405, 406, 407, 408, 404, 404, + 403, 403, 405, 406, 405, 406, 403, 403, 403, 405, 406, 405, + 403, 405, 379, 377, 377, 378, 379, 399, 400, 399, 377, 377, + 378, 379, 380, 400, 401, 399, 377, 377, 341, 341, 340, 340, + 340, 339, 339, 340, 341, 341, 342, 362, 363, 361, 339, 339, + 341, 366, 364, 365, 367, 368, 365, 365, 367, 368, 367, 365, + 366, 368, 369, 368, 369, 366, 366, 365, 365, 367, 368, 367, + 368, 365, 365, 365, 367, 368, 367, 365, 366, 368, 369, 369, + 370, 367, 367, 366, 366, 368, 369, 368, 369, 366, 366, 366, + 368, 369, 368, 366, 367, 369, 370, 371, 372, 368, 368, 367, + 367, 369, 370, 369, 370, 367, 367, 367, 369, 370, 369, 367, + 369, 343, 341, 341, 342, 343, 363, 364, 363, 341, 341, 342, + 343, 344, 364, 365, 363, 341, 341, 305, 305, 307, 308, 305, + 305, 306, 307, 308, 328, 329, 327, 305, 305, 306, 307, 327, + 328, 327, 305, 305, 262, 262 + ] + + +x = range(1, len(memResidencies) + 1) + + +# Plotting the lines +plt.plot(x, memResidencies, label='Memory Residency') +plt.plot(x, memUsages, label='Memory Allocation') + + +plt.title('Memory usage compare to memory residency with GC running') + +# Adding a legend +plt.legend() + +# Displaying the plot +plt.show()