Java don rác như thế nào
Trong Java, rác (garbag) có nghĩa là mộ đố đố ượng không được ham chếu đến nữa và bộ hu gom rác (Garbag collcor) có nhệm vụ hủy các đố ượng đó để gả phóng bộ nhớ.
Show
Garbag collcors là gì ?Chắc hẳn các vlopr đã không í lần ừng bị "mmory lak" hay là "ou of mmory", nguyên nhân là o vệc quản lý bộ nhớ không ố. Rấ may rong Java đã cung cấp mộ bộ Garbag Collcor sẽ ự động ọn ẹp bộ nhớ. Nhờ nó, các vlopr sẽ không cần quan âm đến vệc quản lý và phân phố lạ bộ nhớ của chương rình như C/C++. Garbag Collcors (ướ đây sẽ gọ ắ là GC) được định nghĩa như là mộ quá rình ự động hực h nhệm vụ quản lý bộ nhớ. Co Java được ịch sang byco rồ chạy rên máy ảo Java hay vế ắ là JVM. Trong quá rình chạy chương rình, các đố ượng được ạo ở vùng nhớ hap, mộ phần bộ nhớ ành cho chương rình. Sau cùng, sẽ có mộ và đố ượng mà chương rình không cần ùng đến. Các đố ượng này sẽ được garbag collcor ruy ìm và xóa bỏ để hu hồ lạ ung lượng bộ nhớ. Khác bệ rấ nhều kh chúng a làm vệc vớ C/C++, vệc quản lý bộ nhớ phả hực hện "by han". Và nếu hểu được cách hức mà GC hoạ động như hế nào, các lập rình vên sẽ ễ àng hơn rong vệc phá rển phần mềm. Vậy Garbag collcors hoạ động như hế nào?Đầu ên chúng a hãy nhớ lạ kến rúc JVM, rong moul "Run m ara" chúng a có 2 vùng nhớ là vùng nhớ Có nhều ến rình hu gom rác khác nhau nhưng phổ bến nhấ Ở vùng nhớ Hap được cha làm 3 vùng nhớ nhỏ hơn, ạm gọ là Young gnraon, Ol gnraon và Prmann gnraon. Young gnraon: được cha hành nhều vùng nhớ nhỏ hơn là En(khở ạo) và Survvor(sống só). Các Objc vừa được khở ạo sẽ nằm ở vùng En, sau chu kì qué đầu ên nếu Objc đó còn ồn ạ hì sẽ được chuyển sang vùng Survvor. Tạ đây cá Objc được GC ho õ lên ục, nếu như qua nhều chu kì qué mà Objc vẫn còn được sử ụng hì lúc này Objc sẽ được chuyển sang vùng nhớ hứ hứ ha. Ol gnraon: là nơ chứa những Objc òn ạ đủ "lâu", còn "lâu" như hế nào hì lạ ùy huộc vào huậ oán của ừng bộ GC. Prmann gnraon: không chứa Objc mà đây là nơ để chứa các maaa của JVM như các class và mho của ứng ụng. Do đó nếu các class và mho không còn được sử ụng nữa hì GC sẽ co chúng là "rác" và ọn ẹp nó. Ưu và nhược đểmTrong C++, sau kh khở ạo mộ Objc, các lập rình vên phả chủ động xóa vùng nhớ của Objc bằng câu lệnh Tạm kếVệc hểu rõ ưu và nhược đểm của ừng ngôn ngữ sẽ gúp bạn lựa chọn ngôn ngữ hích hợp để phá rển ứng ụng, vì suy cho cùng ngôn ngữ cũng chỉ là công cụ, sử ụng hệu quả hay không phụ huộc rấ nhều vào ngườ phá rển ứng ụng! Garbag Collcon là kỹ huậ được sử ụng rong Java để phân bổ hoặc loạ bỏ các đố ượng không hể ruy cập và bộ nhớ không sử ụng. Ngay ừ cá ên, chúng a có hể hểu rằng Garbag Collcon lên quan đến vệc ho õ và xóa rác khỏ vùng nhớ. Tuy nhên, rên hực ế, Garbag Collcon ho õ ừng đố ượng có sẵn rong không gan hap JVM và loạ bỏ những đố ượng không sử ụng. Chúng a bế rằng ấ cả các đố ượng mà chúng a ạo động đều được cấp phá rong bộ nhớ hap của ứng ụng. Thông hường, lập rình vên có nhệm vụ vừa ạo vừa xóa các đố ượng rong chương rình, nhưng lập rình vên hường bỏ qua vệc xóa đố ượng. Đều này ạo ra vấn đề OuOfMmoryErrors o không đủ bộ nhớ vì không xóa các đố ượng không mong muốn. Trong Java, lập rình vên không phả lo lắng về vấn đề gả phóng bộ nhớ của các đố ượng không sử ụng hoặc không mong muốn này, vì hệ hống Garbag Collcon luôn chạy ở chế độ nền và mục đích chính của nó là gả phóng bộ nhớ hap bằng cách xóa các đố ượng không hể ruy cập. Về cơ bản, Garbag Collcon rong Java là quá rình ho õ ấ cả các đố ượng vẫn còn được sử ụng và đánh ấu phần còn lạ của chúng là rác. Quá rình Gom rác rong Java được co là mộ lược đồ quản lý bộ nhớ ự động vì ngườ lập rình không phả định vị các đố ượng mộ cách rõ ràng. Tập hợp rác rong Java chạy rên các luồng có mức độ ưu ên hấp. Vệc rển kha Garbag Collcon có rong JVM (Máy ảo Java). Mỗ JVM có hể hực hện Garbag Collcon. Nhưng chỉ có mộ yêu cầu; rằng nó phả đáp ứng đặc đểm kỹ huậ JVM. Oracl's HoSpo là mộ rong những JVM phổ bến nhấ cung cấp mộ ập hợp các ùy chọn Garbag Collcon mạnh mẽ và hoàn hện. Vòng đờ đố ượng rong JavaVòng đờ đố ượng rong Java có hể được cha hành 3 ga đoạn: 1. Tạo đố ượngNó chung, để ạo mộ đố ượng, chúng ô sử ụng mộ ừ khóa nw. Ví ụ: MyClass obj = nw MyClass () ; Chúng a đã ạo đố ượng obj của lớp MyClass. Kh chúng a ạo đố ượng, mộ lượng bộ nhớ cụ hể sẽ được cấp phá để lưu rữ đố ượng đó. Lượng bộ nhớ được cấp phá cho các đố ượng có hể hay đổ ùy ho kến rúc và JVM. 2. Đố ượng sử ụngTrong ga đoạn này, Đố ượng được sử ụng bở các đố ượng khác của ứng ụng rong Java. Trong quá rình sử ụng, đố ượng nằm rong bộ nhớ và có hể ham chếu hoặc chứa ham chếu đến các đố ượng khác. 3. Sự phá hủy đố ượngHệ hống Garbag Collcon gám sá các đố ượng và gữ số lượng ham chếu đến ừng đố ượng. Không cần các đố ượng như vậy rong chương rình của chúng a nếu không có ham chếu đến đố ượng này, vì vậy vệc phân bổ bộ nhớ không sử ụng này là đều hoàn hảo. Đố ượng không hể ruy cập rong JavaKh mộ đố ượng không chứa bấ kỳ ham chếu “có hể ruy cập” nào đố vớ nó, hì chúng a gọ nó là đố ượng không hể ruy cập. Các đố ượng này cũng có hể được gọ là đố ượng không ham chếu. Ví ụ về các đố ượng không hể ruy cập: Tính đủ đều kện để Garbag Collcon rong JavaMộ đố ượng có hể đủ đều kện để Garbag Collcon rong Java nếu và chỉ kh nó không hể ruy cập được. Trong chương rình rên, sau kh kha báo là null; đố ượng kép 4 rong vùng đống rở nên đủ đều kện để Garbag Collcon. Tính đủ đều kện của đố ượngMặc ù Java có ính năng Garbag Collcon ự động, nhưng mộ đố ượng phả được hực hện ho cách hủ công. Có nhều cách khác nhau để bế lệu đố ượng có đủ đều kện cho Bộ sưu ập rác rong Java hay không. Nó chung, có bốn cách rong Java để làm cho mộ đố ượng đủ đều kện để Garbag Collcon: Các cách yêu cầu JVM chạy Garbag CollconNgay cả kh chúng ô làm cho mộ đố ượng đủ đều kện để Garbag Collcon rong Java, nó có hể đủ đều kện hoặc không đủ đều kện để Máy ảo Java (JVM) phá hủy. Vì vậy, có mộ số cách để yêu cầu JVM hủy đố ượng này và hực hện Garbag Collcon.Có ha cách để yêu cầu JVM để hu hập Rác rong Java là: Thuậ oán của Garbag Collcon rong JavaThuậ oán của Garbag Collcon rong Java gúp loạ bỏ các đố ượng không được ham chếu hoặc không hể ruy cập. Các huậ oán này luôn chạy ở chế độ nền. Có mộ số loạ bộ huậ oán Garbag Collcon khác nhau rong Java chạy ở chế độ nền. Và rong số đó, mộ rong những huậ oán là huậ oán Đánh ấu và Qué. Thuậ oán đánh ấu và quéThuậ oán Đánh ấu và Qué là mộ huậ oán cơ bản và ban đầu để Garbag Collcon rong Java. Thuậ oán này về cơ bản hực hện ha chức năng chính: đánh ấu và qué. Thứ nhấ, nó sẽ ho õ và phá hện các đố ượng không hể ruy cập và hứ ha, nó sẽ gả phóng các đố ượng này khỏ vùng bộ nhớ hap để lập rình vên có hể sử ụng lạ. 1. Đánh ấu pha - Đánh ấu các đố ượng sốngĐây là ga đoạn đầu ên của huậ oán, rong đó có vệc phá hện ấ cả các đố ượng vẫn còn sống. Đây là ga đoạn mà bộ Garbag Collcon xác định phần nào của bộ nhớ đang được sử ụng và phần nào không được sử ụng. Trong pha này kh đều kện được hực hện, b kểm ra của nó được đặ hành 0 hoặc sa. Chúng ô đặ b được đánh ấu hành 1 hoặc ru cho ấ cả các đố ượng có hể ruy cập. Ở đây chúng a có hể co mỗ đố ượng là mộ nú và sau đó chúng a ruy cập ấ cả các đố ượng hoặc nú có hể ruy cập được ừ đố ượng / nú này và nó lặp lạ cho đến kh chúng a đã ruy cập ấ cả các nú có hể ruy cập. Thuậ oán đánh ấu pha &g;&g;&g; Đọc hêm: Consrucor Channg rong Java - Tấ ần ậ về Consrucor Channg 2. Ga đoạn qué - Loạ bỏ các vậ chếThuậ oán pha qué “xóa” ấ cả các đố ượng không hể ruy cập hoặc không hể ruy cập được, nó gả phóng vùng bộ nhớ được lưu rữ cho ấ cả các đố ượng không hể ruy cập. Mỗ mục có gá rị kểm ra được đặ hành fals sẽ bị xóa khỏ bộ nhớ ngăn xếp, đố vớ mọ đố ượng có hể ruy cập khác, chúng ô đặ gá rị của b được đóng ấu hành fals. Hện ạ, b kểm ra cho ấ cả các đố ượng có hể ruy cập được đặ hành fals. Thuậ oán hu hập qué: Thuậ oán 'Mark an Swp' còn được gọ là bộ Garbag Collcon ho õ vì huậ oán này được sử ụng để ho õ các đố ượng. Ví ụ: Ưu đểm của huậ oán đánh ấu và quéNhược đểm của huậ oán đánh ấu và qué&g;&g;&g; Đọc hêm: Hướng ẫn JDBC rong Java - Kến rúc, hành phần và cách làm vệc Ưu đểm và nhược đểm của Garbag Collcon rong JavaƯu đểm của vệc Garbag Collcon:Nhược đểm của vệc Garbag Collcon:Kế luận: Garbag Collcon rong Java rấ hữu ích để ngăn chặn rò rỉ bộ nhớ và sử ụng không gan. Trong hướng ẫn Java này, chúng a đã ìm hểu về Garbag Collcon rong Java và cách hoạ động của nó. Chúng a đã hảo luận về các đều khoản quan rọng lên quan đến Java Garbag Collcon và các huậ oán Garbag Collcon. Có bốn loạ Trình Garbag Collcon Java mà chúng a đã ìm hểu rong bà vế này. Chúng ô đã hảo luận về huậ oán Java Mark và Swp cùng vớ những ưu và nhược đểm của nó. Chúng a cũng đã xm xé những ưu đểm và nhược đểm của Garbag Collcon rong Java. Hy vọng bạn đã nắm rõ và Garbag Collcon và có hể áp ụng nó rong chương rình của mình. Tìm hểu hêm về Java và các ngôn ngữ lập rình khác qua các khóa học lập rình ạ Vện công nghệ hông n T3H. |