Hướng dẫn how does memory gets managed in python - làm thế nào để bộ nhớ được quản lý trong python

Hiểu phân bổ bộ nhớ rất quan trọng đối với bất kỳ nhà phát triển phần mềm nào vì viết mã hiệu quả có nghĩa là viết mã tiết kiệm bộ nhớ. Phân bổ bộ nhớ có thể được định nghĩa là phân bổ một khối không gian trong bộ nhớ máy tính cho một chương trình. Trong phương pháp phân bổ và phân bổ bộ nhớ Python là tự động vì các nhà phát triển Python đã tạo ra một trình thu thập rác cho Python để người dùng không phải thực hiện bộ sưu tập rác thủ công.

Thu gom rác thải

Bộ sưu tập rác là một quá trình trong đó trình thông dịch giải phóng bộ nhớ khi không sử dụng để cung cấp cho nó cho các đối tượng khác. Tôi là một trường hợp không có tham chiếu nào chỉ vào một đối tượng trong bộ nhớ, tức là nó không được sử dụng như vậy, máy ảo có Bộ thu gom rác tự động xóa đối tượng đó khỏi bộ nhớ heap
Assume a case where no reference is pointing to an object in memory i.e. it is not in use so, the virtual machine has a garbage collector that automatically deletes that object from the heap memory

Lưu ý: Để biết thêm thông tin, hãy tham khảo Bộ sưu tập rác trong Python For more information, refer to Garbage Collection in Python

Đếm tham chiếu

Đếm tham chiếu hoạt động bằng cách đếm số lần một đối tượng được tham chiếu bởi các đối tượng khác trong hệ thống. Khi các tham chiếu đến một đối tượng được xóa, số lượng tham chiếu cho một đối tượng bị giảm. Khi số lượng tham chiếu trở thành 0, đối tượng được giải quyết.

Ví dụ: giả sử có hai hoặc nhiều biến có cùng một giá trị, vì vậy, máy ảo Python làm gì, thay vì tạo một đối tượng khác có cùng giá trị trong đống riêng tư, nó thực sự tạo ra biến thứ hai Giá trị hiện có trong đống riêng tư. Do đó, trong trường hợp của các lớp, có một số tài liệu tham khảo có thể chiếm một lượng lớn không gian trong bộ nhớ, trong trường hợp như vậy, việc đếm tính rất có lợi để bảo tồn bộ nhớ có sẵn cho các đối tượng khác

Example:

Khi x = 10 được thực thi, đối tượng số nguyên 10 được tạo trong bộ nhớ và tham chiếu của nó được gán cho biến X, điều này là do mọi thứ đều là đối tượng trong Python.

Hướng dẫn how does memory gets managed in python - làm thế nào để bộ nhớ được quản lý trong python

Hãy để xác minh nếu nó đúng

x = 10

y = x

if

x and y do not refer to the same object
0
x and y do not refer to the same object
1==
x and y do not refer to the same object
0
x and y do not refer to the same object
5

x and y do not refer to the same object
6
x and y do not refer to the same object
7
x and y do not refer to the same object
8
x and y do not refer to the same object
9x = 100

Output:

x and y refer to the same object

Trong ví dụ trên, x = 101 sẽ tạo một biến tham chiếu khác y sẽ đề cập đến cùng một đối tượng vì Python tối ưu hóa việc sử dụng bộ nhớ bằng cách phân bổ cùng một đối tượng tham chiếu đến một biến mới nếu đối tượng đã tồn tại với cùng một giá trị.

Hướng dẫn how does memory gets managed in python - làm thế nào để bộ nhớ được quản lý trong python

Bây giờ, hãy để thay đổi giá trị của X và xem điều gì sẽ xảy ra.

x = 10

y = x

if

x and y do not refer to the same object
0
x and y do not refer to the same object
1==
x and y do not refer to the same object
0
x and y do not refer to the same object
5

Trong ví dụ trên, x = 101 sẽ tạo một biến tham chiếu khác y sẽ đề cập đến cùng một đối tượng vì Python tối ưu hóa việc sử dụng bộ nhớ bằng cách phân bổ cùng một đối tượng tham chiếu đến một biến mới nếu đối tượng đã tồn tại với cùng một giá trị.

x and y do not refer to the same object
6
x and y do not refer to the same object
7
x and y do not refer to the same object
8=1x = 100

Output:

x and y do not refer to the same object

Bây giờ, hãy để thay đổi giá trị của X và xem điều gì sẽ xảy ra.

Hướng dẫn how does memory gets managed in python - làm thế nào để bộ nhớ được quản lý trong python

x x = 109____4 x 1

if

x and y do not refer to the same object
0x 4=
x and y do not refer to the same object
0
x and y do not refer to the same object
5

  • Vì vậy, bây giờ X đề cập đến một đối tượng mới X và liên kết giữa X và 10 bị ngắt kết nối nhưng Y vẫn đề cập đến 10.
  • Phân bổ bộ nhớ trong Python

Có hai phần của bộ nhớ:stack memory and all the values objects are stored in a private heap.

ngăn xếp bộ nhớ

bộ nhớ đống

Các phương thức/gọi phương thức và các tham chiếu được lưu trữ trong bộ nhớ ngăn xếp và tất cả các đối tượng giá trị được lưu trữ trong một đống riêng tư.

Example:

Công việc của bộ nhớ ngăn xếp

Việc phân bổ xảy ra trên các khối bộ nhớ liền kề. Chúng tôi gọi nó là phân bổ bộ nhớ ngăn xếp vì phân bổ xảy ra trong ngăn xếp gọi hàm. Kích thước của bộ nhớ được phân bổ được biết đến với trình biên dịch và bất cứ khi nào một hàm được gọi, các biến của nó sẽ được phân bổ bộ nhớ trên ngăn xếp.

Đó là bộ nhớ chỉ cần thiết bên trong một cuộc gọi chức năng hoặc phương thức cụ thể. Khi một hàm được gọi, nó được thêm vào ngăn xếp cuộc gọi của chương trình. Bất kỳ gán bộ nhớ cục bộ nào như khởi tạo biến bên trong các hàm cụ thể đều được lưu trữ tạm thời trên ngăn xếp gọi hàm, trong đó nó bị xóa khi hàm quay lại và ngăn xếp cuộc gọi chuyển sang tác vụ tiếp theo. Phân bổ này vào một khối bộ nhớ tiếp giáp được xử lý bởi trình biên dịch bằng cách sử dụng các thói quen được xác định trước và các nhà phát triển không cần phải lo lắng về nó.

=3 =4

x and y do not refer to the same object6=6= =8

x and y do not refer to the same object
6100__ 102

Example:


Làm thế nào để Python giải phóng bộ nhớ?

Như đã giải thích trước đó, Python xóa các đối tượng không còn được tham chiếu trong chương trình để giải phóng không gian bộ nhớ.Quá trình này trong đó Python giải phóng các khối bộ nhớ không còn được sử dụng được gọi là bộ sưu tập rác.deletes objects that are no longer referenced in the program to free up memory space. This process in which Python frees blocks of memory that are no longer used is called Garbage Collection.

Làm thế nào để Python lưu trữ dữ liệu trong bộ nhớ?

Có thể lưu trữ trạng thái của một đối tượng Python dưới dạng luồng byte trực tiếp vào một tệp hoặc luồng bộ nhớ và truy xuất trạng thái ban đầu của nó.Quá trình này được gọi là tuần tự hóa và khử serialization.Thư viện được xây dựng của Python chứa các mô -đun khác nhau cho quá trình tuần tự hóa và giải phóng hóa.byte stream directly to a file, or memory stream and retrieve to its original state. This process is called serialization and de-serialization. Python's built in library contains various modules for serialization and deserialization process.

Python có quản lý bộ nhớ tự động không?

Phân bổ bộ nhớ có thể được định nghĩa là phân bổ một khối không gian trong bộ nhớ máy tính cho một chương trình.Trong phương pháp phân bổ và phân bổ bộ nhớ Python là tự động vì các nhà phát triển Python đã tạo ra một trình thu thập rác cho Python để người dùng không phải thực hiện bộ sưu tập rác thủ công.