Hướng dẫn how does python variable store in memory? - biến python lưu trữ trong bộ nhớ như thế nào?

  • Quản lý bộ nhớ là một quá trình phân bổ, giải quyết bộ nhớ cho các biến.
  • Quản lý bộ nhớ là về việc sử dụng hiệu quả bộ nhớ & nbsp ;, để những người khác xử lý chạy trơn tru.
  • Trong quản lý bộ nhớ Python được thực hiện tự động bởi Trình quản lý bộ nhớ.
  • Quản lý bộ nhớ cũng liên quan đến việc làm sạch bộ nhớ của đối tượng không còn được truy cập bởi bất kỳ tài liệu tham khảo nào.
  • Quá trình làm sạch bộ nhớ của đối tượng không được giới thiệu được gọi là bộ sưu tập rác.
  • Python sử dụng thuật toán đếm tham chiếu cho thu thập rác. Thuật toán này theo dõi tất cả các tài liệu tham khảo của đối tượng. Khi đối tượng không còn được tham chiếu bởi bất kỳ biến & nbsp ;, đối tượng bị xóa bởi bộ thu gom rác.
  • Tất cả các quy trình này đều được tự động hóa trong Python, chúng tôi không cần phải lo lắng về quản lý bộ nhớ.

Hãy để hiểu làm thế nào bộ nhớ được phân bổ cho các biến trong Python & nbsp ;.

  • Mọi thứ trong Python là đối tượng.
  • Python lưu trữ đối tượng trong bộ nhớ heap và tham chiếu của đối tượng trong ngăn xếp.
  • Các biến, các hàm được lưu trữ trong ngăn xếp và đối tượng được lưu trữ trong đống.
  • Example:

Biểu diễn bộ nhớ của mã trên:

Hãy để hiểu về dòng mã trên từng dòng

x=5:

Mọi thứ trong Python là một đối tượng & nbsp ;. Khi chúng tôi tạo một biến x có giá trị 5, 5 sẽ được lưu trữ trong heap vì đối tượng số nguyên và x sẽ được lưu trữ trong ngăn xếp [chúng tôi không cần chỉ định loại biến & nbsp; .; x là tham chiếu đến đối tượng số nguyên 5 i.e x lưu trữ vị trí bộ nhớ của heap nơi có đối tượng 5.

y=6:

Giống như biến X được tạo, biến y cũng sẽ được tạo với đối tượng số nguyên 6 trong heap và biến đổi độ y trong ngăn xếp.

a=5

Nhìn vào biểu diễn bộ nhớ trên của mã, bạn sẽ thấy biến A đang trỏ đến cùng một đối tượng mà X tham khảo. Đây là cách Python tối ưu hóa phân bổ bộ nhớ. Nó không tạo lại cùng một đối tượng & nbsp;, nó sẽ đề cập đến biến đến đối tượng đã được tạo trong đống.

d=func[x,y]

Ở đây & nbsp ;, func func [] được gọi, vì vậy khung ngăn xếp mới được thêm vào ngăn xếp như trong sơ đồ trên. Biến tham chiếu C sẽ được tạo trong Stack & nbsp ;. C sẽ đề cập đến đối tượng được tạo sau khi tính toán tức là 11.

Khung ngăn xếp của chức năng được loại bỏ khỏi ngăn xếp khi nó trả về. Vì vậy, khi func [] trả về c, nó sẽ bị xóa & nbsp; và biến tham chiếu d sẽ trỏ đến nó.

Khi chúng ta viết ‘y = không có & nbsp ;, nó có nghĩa là biến đổi độ y không đề cập đến bất kỳ đối tượng nào. Bây giờ đối tượng số nguyên 6 không được giới thiệu bởi bất kỳ biến nào. Bộ sưu tập rác bây giờ sẽ loại bỏ nó để làm sạch bộ nhớ để sử dụng tiếp.

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 về bộ sưu tập rác, bạn có thể tham khảo bài viết này. For more on garbage collection you can refer to this article.

Đế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:

Phân bổ bộ nhớ trong Python

Có hai phần của bộ nhớ:

  • 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ư.stack memory and all the values objects are stored in a private heap.

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ó.

Example:

def func[]:

    a = 20

    b ____4 []

    func[]:1= func[]:3

Công việc của bộ nhớ heap

Bộ nhớ được phân bổ trong khi thực hiện các hướng dẫn được viết bởi các lập trình viên. Lưu ý rằng tên Heap không liên quan gì đến cấu trúc dữ liệu heap. Nó được gọi là Heap vì nó là một đống không gian bộ nhớ dành cho các lập trình viên để phân bổ và phân bổ. Các biến cần thiết bên ngoài các cuộc gọi phương thức hoặc chức năng hoặc được chia sẻ trong nhiều chức năng trên toàn cầu được lưu trữ trong bộ nhớ heap.

Example:


Các biến được lưu trữ trong bộ nhớ như thế nào?

Các biến thường được lưu trữ trong RAM. Đây là trên đống [ví dụ: tất cả các biến toàn cầu thường sẽ đến đó] hoặc trên ngăn xếp [tất cả các biến được khai báo trong một phương thức/hàm thường đi đến đó]. Ngăn xếp và đống đều là RAM, chỉ là các vị trí khác nhau. Con trỏ có các quy tắc khác nhau.usually stored in RAM. This is either on the heap [e.g. all global variables will usually go there] or on the stack [all variables declared within a method/function usually go there]. Stack and Heap are both RAM, just different locations. Pointers have different rules.

Liệu một biến trong Python có một vị trí trong bộ nhớ?

Chúng ta có thể thấy vị trí của địa chỉ bộ nhớ của giá trị đó với hàm id [].Hãy nghĩ về con số dài đó như một lọ lưu trữ.Tôi có thể kiểm tra vị trí của giá trị được liên kết với Peanut_butter bằng cách chuyển biến của tôi cho hàm id [].. Think of that long number as a storage jar. I can check the location of the value associated with peanut_butter by passing my variable to the id[] function.

Làm thế nào được đặt Python được lưu trữ trong bộ nhớ?

Phân bổ bộ nhớ trong Python Các phương thức/các cuộ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ư.The methods/method calls and the references are stored in stack memory and all the values objects are stored in a private heap.

Làm thế nào một giá trị được lưu trữ trong một python biến?

Toán tử gán, được ký hiệu là biểu tượng = =, là toán tử được sử dụng để gán các giá trị cho các biến trong Python.Dòng x = 1 lấy giá trị đã biết, 1 và gán giá trị đó cho biến có tên là X X.Sau khi thực hiện dòng này, số này sẽ được lưu trữ vào biến này.. The line x=1 takes the known value, 1, and assigns that value to the variable with name “x”. After executing this line, this number will be stored into this variable.

Bài Viết Liên Quan

Chủ Đề