SlideShare une entreprise Scribd logo
1  sur  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?

Contenu connexe

Similaire à Memory management

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 KernelKernel TLV
 
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 CollectorWednesday Solutions
 
Effective memory management
Effective memory managementEffective memory management
Effective memory managementYurii Kotov
 
Effective memory management
Effective memory managementEffective memory management
Effective memory managementDenis Zhuchinski
 
millions-gc-jax-2022.pptx
millions-gc-jax-2022.pptxmillions-gc-jax-2022.pptx
millions-gc-jax-2022.pptxTier1 app
 
Java Garbage Collection, Monitoring, and Tuning
Java Garbage Collection, Monitoring, and TuningJava Garbage Collection, Monitoring, and Tuning
Java Garbage Collection, Monitoring, and TuningCarol McDonald
 
this-is-garbage-talk-2022.pptx
this-is-garbage-talk-2022.pptxthis-is-garbage-talk-2022.pptx
this-is-garbage-talk-2022.pptxTier1 app
 
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)Pankaj Suryawanshi
 
Share and Share Alike
Share and Share AlikeShare and Share Alike
Share and Share Alikeawebneck
 
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 IVArti Parab Academics
 
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 valgrindCheng Hsien Chen
 
Chronicles Of Garbage Collection (GC)
Chronicles Of Garbage Collection (GC)Chronicles Of Garbage Collection (GC)
Chronicles Of Garbage Collection (GC)Techizzaa
 
OpenCL Kernel Optimization Tips
OpenCL Kernel Optimization TipsOpenCL Kernel Optimization Tips
OpenCL Kernel Optimization TipsChamp Yen
 
Faster computation with matlab
Faster computation with matlabFaster computation with matlab
Faster computation with matlabMuhammad Alli
 
"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис ЖучинскийFwdays
 

Similaire à 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" Денис Жучинский
 

Dernier

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Dernier (20)

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

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.