Hướng dẫn how does python variable store in memory? - biến python lưu trữ trong bộ nhớ như thế nào?
Hãy để hiểu làm thế nào bộ nhớ được phân bổ cho các biến trong Python & nbsp ;. Show
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
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.
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.
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.
Ở đâ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ảiBộ 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 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 PythonCó hai phần của bộ nhớ:
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ếpViệ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:
Công việc của bộ nhớ heapBộ 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. |