Tôi đã học được rằng các trường lớp được lưu trữ trong heap, nhưng đâu là các phương thức được lưu trữ? Trong đống hay ở đâu đó khác? chúng có nội tuyến không?Phương thức được lưu trữ trong bộ nhớ ở đâu?
Trả lời
Phương pháp được lưu ở đâu đó khác trong bộ nhớ. Lưu ý rằng các phương thức là mỗi lớp, không phải cho mỗi trường hợp. Vì vậy, thông thường, số lượng các phương thức không thay đổi theo thời gian chạy của một chương trình (có những ngoại lệ). Trong các mô hình truyền thống, nơi các phương thức sống được gọi là "đoạn mã". Trong .net, nó khó khăn hơn: các phương thức ban đầu sống trong assembly, và được ánh xạ vào bộ nhớ quá trình. Ở đó, trình biên dịch vừa mới tạo ra một bản sao thứ hai của một số phương thức trong mã gốc; bản sao này được thực hiện. Mã JIT có thể được tạo và xóa nhiều lần trong suốt thời gian chạy, do đó, nó là thực tế để xem nó cũng như sống "trong Heap".
Phương thức lớp được lưu trữ cùng với tất cả mã trong phân đoạn bộ nhớ chương trình chuyên dụng có nghĩa là để lưu trữ mã. Mỗi mã của phương thức được lưu trữ một lần.
- 1. Kho lưu trữ cục bộ ở đâu?
- 2. Một chuỗi liên tục sẽ được lưu trữ trong bộ nhớ ở đâu?
- 3. plugin maven được lưu trữ ở đâu
- 4. Gói onSaveInstanceState được lưu ở đâu?
- 5. Trình biên dịch lưu trữ các phương thức cho các lớp C++ ở đâu?
- 6. TempData được lưu trữ ở đâu?
- 7. ViewState được lưu trữ ở đâu?
- 8. ".NET Storage" được lưu trữ ở đâu?
- 9. Lưu trữ cục bộ google chrome ở đâu?
- 10. Nơi lưu trữ trong bộ nhớ được lưu trữ vtable?
- 11. Đối tượng tạm thời được lưu trữ ở đâu?
- 12. Các biến trong Python được lưu trữ ở đâu?
- 13. Siêu dữ liệu con trỏ được lưu trữ ở đâu?
- 14. Vars được lưu trữ ở đâu trong Nodej?
- 15. Mật khẩu khóa tên mạnh được lưu trữ ở đâu?
- 16. Macro được lưu trữ trong Notepad ++ ở đâu?
- 17. Dự án được lưu trữ trong Eclipse ở đâu?
- 18. Các lớp java được lưu trữ trong Oracle ở đâu?
- 19. APC lưu trữ opcode và bộ nhớ cache biến người dùng ở đâu?
- 20. Phân bổ bộ nhớ phương thức tĩnh
- 21. ở đâu "null" trong bộ nhớ
- 22. Máy chủ đã đăng ký được lưu trữ ở đâu?
- 23. Các khối CMS tĩnh Magento được lưu trữ ở đâu?
- 24. Git lưu trữ tệp ở đâu?
- 25. Lưu trữ tệp nhật ký lưu trữ ở đâu?
- 26. Macro được lưu ở đâu?
- 27. Các tệp evtx được lưu trữ ở đâu được lưu trữ?
- 28. Giải pháp lưu trữ bộ nhớ đệm nhẹ ở Scala?
- 29. Lưu trữ Smalltalk đã mất ở đâu?
- 30. Tệp Rails này được lưu trữ ở đâu? db/development.sqlite3
+1 Tôi yêu thích giải thích ... –
Tôi không nói "trước lớp", nhưng "** mỗi ** - lớp". Các phương thức là mỗi lớp: điều này có nghĩa là mọi phương thức chỉ tồn tại một lần, cho lớp đó. Các trường hợp khác nhau vẫn có cùng phương pháp. Thuộc tính/thuộc tính là mỗi trường hợp: một thuộc tính tồn tại cho mỗi trường hợp, tức là các phiên bản khác nhau có các giá trị khác nhau cho một thuộc tính. –
@Martin: tôi có một mối quan ngại về vấn đề này. Tôi không hiểu tại sao mã JIT tạo ra một bản sao mỗi khi phương thức đó được thực thi. bạn đã nói rằng các phương thức là Per-Class và tôi 100% đồng ý với điều đó nhưng tôi cũng tin rằng khi một phương pháp được gọi là nó đề cập đến cùng một phương thức thực tế với việc sao chép, bởi vì nếu có một số bạn nói) thì phương thức có thể là Per-Class như thế nào. – Singleton