SlideShare uma empresa Scribd logo
1 de 13
MEMORY MANAGEMENT COMPARATIVE OF C/C+
+/JVM/PYTHON.
DANIEL FRANÇA
What’s memory
management?

The process of dynamically allocate memory when
you need and free when you don’t need it
anymore.
How it’s done?
Allocate memory from the heap with enough size
to store what you need.
Free it when you don’t need it.
It can be done either manually or automatic.
Different algorithms can be used (Ref
counting/mark and sweep, etc)
C
Manual memory management through pointers
To allocate memory you need to do a request with the size
of the memory block you want to allocate:
char* ptr = malloc(sizeof(char)*20); //Allocate enough size
for an array of chars size 19 + 1 byte reserved for the null
termination.
To free memory you call free
free(ptr); //Free memory of ptr
You need to be aware of the ownership of the pointer.
(who’s responsible for free the memory)
Pros:
Granular control.
You allocate what you need and free as soon as you
don’t need it.
Usually much lower memory footprint.
Cons
Dynamic allocations are slow and non-deterministic.
Memory-leaks can happen.
C++
Manual memory management/RAII/Smart pointers
Manual memory management is made through new and
delete operators.
RAII: The object is responsible for free the resources in its
deletion, you can see this approach in standard classes like
string and fstream.
Smart pointers: You’ve a class that encapsulates and
simulates a pointer, so you don’t need to handle the pointer
directly, the standard library of C++11 allows different types
of smart pointers like: unique_ptr, shared_ptr and weak_ptr.
Pros
A wide range of tools to help memory management.
You can use a high or low-level approach.
Small performance penalty.
Cons
Understand how the methods work can be complex.
Still memory-leaks prone.
JVM (Oracle hotspot)
Automatic Garbage Collection
Mark and sweep algorithm (mark what’s alive, the
remaining are marked as “free”)
No memory is returned to the OS
Generational GC
Different collections by age (young, old and permanent)
Memory is allocated in advance
Pros
You don’t need to worry about manual deallocations
Fine tuning of GC to optimize performance
"new" operator has only an increment pointer cost
Cons
Complex GC system
Stop-the-world event when running
Major GC is very slow
Hard to detect cause of memory leaks
Non deterministic behaviour
Python (CPython)
Automatic/Reference counting/Generational GC
Reference counting can’t handle reference
cycles, so here comes the garbage collector.
GC works based on a threshold of
allocations/deallocations.
You can disable GC for improve performance as
GC has a performance penalty.
Pros
Automatic memory management, you can focus in the algorithm.
You can call GC manually if you want.
Debug tools for GC (i.e: DEBUG_LEAK flags)
Cons
Doesn’t care about the memory usage (instead use threshold of
allocations/deallocations).
Doesn’t care about size of objects (instead it counts only the numbers).
Performance and space penalty.
Memory leaks are harder for identify the source.
Considerations
There’re different approaches trying to find the best memory
management model.
Sometimes you need to chose between performance or
memory footprint.
Non-deterministic GC is not suitable for RT applications.
There’re different tools to track memory leaks (i.e: Valgrind)
Automatic memory management doesn’t mean you don’t
need to think and understand it.
Dank u
Vragen?

Mais conteúdo relacionado

Semelhante a Memory management

Memory Management in Go: Stack, Heap & Garbage Collector
Memory Management in Go: Stack, Heap & Garbage CollectorMemory Management in Go: Stack, Heap & Garbage Collector
Memory Management in Go: Stack, Heap & Garbage Collector
Wednesday Solutions
 
Java Garbage Collection, Monitoring, and Tuning
Java Garbage Collection, Monitoring, and TuningJava Garbage Collection, Monitoring, and Tuning
Java Garbage Collection, Monitoring, and Tuning
Carol McDonald
 

Semelhante a Memory management (20)

Introduction to Parallelization ans performance optimization
Introduction to Parallelization ans performance optimizationIntroduction to Parallelization ans performance optimization
Introduction to Parallelization ans performance optimization
 
Continguous Memory Allocator in the Linux Kernel
Continguous Memory Allocator in the Linux KernelContinguous Memory Allocator in the Linux Kernel
Continguous Memory Allocator in the Linux Kernel
 
Memory Management in Go: Stack, Heap & Garbage Collector
Memory Management in Go: Stack, Heap & Garbage CollectorMemory Management in Go: Stack, Heap & Garbage Collector
Memory Management in Go: Stack, Heap & Garbage Collector
 
Effective memory management
Effective memory managementEffective memory management
Effective memory management
 
Effective memory management
Effective memory managementEffective memory management
Effective memory management
 
millions-gc-jax-2022.pptx
millions-gc-jax-2022.pptxmillions-gc-jax-2022.pptx
millions-gc-jax-2022.pptx
 
Cache memory
Cache memoryCache memory
Cache memory
 
Java Garbage Collection, Monitoring, and Tuning
Java Garbage Collection, Monitoring, and TuningJava Garbage Collection, Monitoring, and Tuning
Java Garbage Collection, Monitoring, and Tuning
 
this-is-garbage-talk-2022.pptx
this-is-garbage-talk-2022.pptxthis-is-garbage-talk-2022.pptx
this-is-garbage-talk-2022.pptx
 
Linux Memory Management with CMA (Contiguous Memory Allocator)
Linux Memory Management with CMA (Contiguous Memory Allocator)Linux Memory Management with CMA (Contiguous Memory Allocator)
Linux Memory Management with CMA (Contiguous Memory Allocator)
 
Programming for Problem Solving
Programming for Problem Solving Programming for Problem Solving
Programming for Problem Solving
 
Share and Share Alike
Share and Share AlikeShare and Share Alike
Share and Share Alike
 
Internet of Things, TYBSC IT, Semester 5, Unit IV
Internet of Things, TYBSC IT, Semester 5, Unit IVInternet of Things, TYBSC IT, Semester 5, Unit IV
Internet of Things, TYBSC IT, Semester 5, Unit IV
 
Fix Heap corruption in Android - Using valgrind
Fix Heap corruption in Android - Using valgrindFix Heap corruption in Android - Using valgrind
Fix Heap corruption in Android - Using valgrind
 
Chronicles Of Garbage Collection (GC)
Chronicles Of Garbage Collection (GC)Chronicles Of Garbage Collection (GC)
Chronicles Of Garbage Collection (GC)
 
C dynamic ppt
C dynamic pptC dynamic ppt
C dynamic ppt
 
OpenCL Kernel Optimization Tips
OpenCL Kernel Optimization TipsOpenCL Kernel Optimization Tips
OpenCL Kernel Optimization Tips
 
Techno-Fest-15nov16
Techno-Fest-15nov16Techno-Fest-15nov16
Techno-Fest-15nov16
 
Faster computation with matlab
Faster computation with matlabFaster computation with matlab
Faster computation with matlab
 
"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 

Memory management

  • 1. MEMORY MANAGEMENT COMPARATIVE OF C/C+ +/JVM/PYTHON. DANIEL FRANÇA
  • 2. What’s memory management? The process of dynamically allocate memory when you need and free when you don’t need it anymore.
  • 3. How it’s done? Allocate memory from the heap with enough size to store what you need. Free it when you don’t need it. It can be done either manually or automatic. Different algorithms can be used (Ref counting/mark and sweep, etc)
  • 4. C Manual memory management through pointers To allocate memory you need to do a request with the size of the memory block you want to allocate: char* ptr = malloc(sizeof(char)*20); //Allocate enough size for an array of chars size 19 + 1 byte reserved for the null termination. To free memory you call free free(ptr); //Free memory of ptr You need to be aware of the ownership of the pointer. (who’s responsible for free the memory)
  • 5. Pros: Granular control. You allocate what you need and free as soon as you don’t need it. Usually much lower memory footprint. Cons Dynamic allocations are slow and non-deterministic. Memory-leaks can happen.
  • 6. C++ Manual memory management/RAII/Smart pointers Manual memory management is made through new and delete operators. RAII: The object is responsible for free the resources in its deletion, you can see this approach in standard classes like string and fstream. Smart pointers: You’ve a class that encapsulates and simulates a pointer, so you don’t need to handle the pointer directly, the standard library of C++11 allows different types of smart pointers like: unique_ptr, shared_ptr and weak_ptr.
  • 7. Pros A wide range of tools to help memory management. You can use a high or low-level approach. Small performance penalty. Cons Understand how the methods work can be complex. Still memory-leaks prone.
  • 8. JVM (Oracle hotspot) Automatic Garbage Collection Mark and sweep algorithm (mark what’s alive, the remaining are marked as “free”) No memory is returned to the OS Generational GC Different collections by age (young, old and permanent) Memory is allocated in advance
  • 9. Pros You don’t need to worry about manual deallocations Fine tuning of GC to optimize performance "new" operator has only an increment pointer cost Cons Complex GC system Stop-the-world event when running Major GC is very slow Hard to detect cause of memory leaks Non deterministic behaviour
  • 10. Python (CPython) Automatic/Reference counting/Generational GC Reference counting can’t handle reference cycles, so here comes the garbage collector. GC works based on a threshold of allocations/deallocations. You can disable GC for improve performance as GC has a performance penalty.
  • 11. Pros Automatic memory management, you can focus in the algorithm. You can call GC manually if you want. Debug tools for GC (i.e: DEBUG_LEAK flags) Cons Doesn’t care about the memory usage (instead use threshold of allocations/deallocations). Doesn’t care about size of objects (instead it counts only the numbers). Performance and space penalty. Memory leaks are harder for identify the source.
  • 12. Considerations There’re different approaches trying to find the best memory management model. Sometimes you need to chose between performance or memory footprint. Non-deterministic GC is not suitable for RT applications. There’re different tools to track memory leaks (i.e: Valgrind) Automatic memory management doesn’t mean you don’t need to think and understand it.