JAVA垃圾回收機制和Python垃圾回收對比與分析
2018/3/9更:個人理解JAVA與Python區別,若有不足,請及時指出,謝謝!
JAVA垃圾回收原理:參考JAVA程式設計思想P90-P91
JAVA垃圾回收:採用停止-複製、標記-清掃的自適應方法
首先使用停止-複製方法,停止程式,然後將存活的物件,從當前堆複製到另外一個堆,並且是一個一個緊密排列;但是複製過程是兩個堆之間來回進行,導致開銷極大,並且,可能在程式穩定後,只有少部分垃圾,但是依舊進行停止-複製的話,產生浪費;因此,標記-清掃方法派上了用場,該方法首先從堆疊和靜態區出發,遍歷所有引用,找出所有活引用,進行標記;該過程不進行清理,當標記完所有物件之後,開始清理工作,沒有標記的物件(垃圾)就會被釋放,所以剩下的是不連續的堆空間,如果希望堆連續,垃圾回收器將重新整理堆空間(Python 用的是計數引用回收,每次引用,計數器+1,當計數為0的時候,該變數會被回收)
編譯過程:Java採用惰性評估方法,當需要裝載某個類時,編譯器會先找到.class檔案,然後將該類位元組碼裝入記憶體,惰性評估只在必要的時候才編譯程式碼;這比對所有程式碼進行編譯要節省許多消耗。
補充:JAVA與Python的區別:
1、JAVA是一種編譯型語言,需要編輯器,Python是一種指令碼性語言,需要直譯器,JAVA是一種強調資料型別的語言,而Python在這個方面是動態的,寬容的;因此JAVA能夠進行過載,而Python是不行的,因為引數執行之前的型別並沒有明確界定。
2、JAVA能夠進行多執行緒程式設計,而Python由於程式鎖的存在,無法進行多執行緒;
3、現階段國內發展情況是:JAVA主要用於web後臺開發,是主流,雖然Python有Django這樣的web框架,但是被公司運用的並不多,Python主要用於資料探勘/分析,自動化指令碼測試等,因為Python擁有強大的各類包;
若有不足之處和問題請指出,互相學習,謝謝!
歡迎轉載,註明出處。
相關文章
- Python垃圾回收機制Python
- java垃圾回收機制Java
- Java 垃圾回收機制Java
- java垃圾回收機制整理Java
- js垃圾回收機制JS
- javascript 垃圾回收機制JavaScript
- JVM 垃圾回收機制JVM
- JVM垃圾回收機制JVM
- python進階(7)垃圾回收機制Python
- Java的垃圾回收(Garbage Collection)機制Java
- JDK 18 GC垃圾回收機制比較JDKGC
- PHP的垃圾回收機制-回收週期PHP
- 剖析垃圾回收機制(上)
- JS的垃圾回收機制JS
- jvm的垃圾回收機制JVM
- JavaScript的垃圾回收機制JavaScript
- PHP的垃圾回收機制PHP
- JVM之垃圾回收機制詳解分析JVM
- Python:垃圾回收Python
- js--閉包與垃圾回收機制JS
- 垃圾回收(三)【垃圾回收通知】
- JS垃圾回收機制筆記JS筆記
- [效能][JVM]jvm垃圾回收機制JVM
- V8垃圾回收機制
- JVM垃圾回收機制入門JVM
- 談談 JVM 垃圾回收機制JVM
- 【翻譯】PHP 垃圾回收機制PHP
- Flutter中的垃圾回收機制Flutter
- 圖解Golang垃圾回收機制!圖解Golang
- JVM 垃圾回收演算法和垃圾回收器JVM演算法
- Python垃圾回收和Linux ForkPythonLinux
- 簡單介紹python的垃圾回收機制Python
- 一文學會 Java 垃圾回收機制Java
- Java教程分享:JVM垃圾回收機制之物件回收演算法JavaJVM物件演算法
- JVM虛擬機器-垃圾回收機制與垃圾收集器概述JVM虛擬機
- C#垃圾回收機制詳解C#
- 聊聊JVM的垃圾回收機制GCJVMGC
- 秒懂JVM的垃圾回收機制JVM