一直不是很理解JVM主要应用于哪些技术开发,最近看周志明的《深入理解Java虚拟机》是源于自己想加深对Java的了解,以便为春招找份好的工作(主要是找Android开发方面的)……这本书除了前几章将JVM历史、内存管理机制、类加载方面比较好理解,看到后面就比较难理解了,特别是程序编译和代码优化、JMM和线程安全与锁优化的,就比较羞涩难懂了……如果以后只是想往Android方面发展,需要对JVM了解多深?
高洛峰2017-04-17 12:11:05
如果以後只是想往 Android 方面發展,需要對 JVM 了解多深?
問出這個問題,就有點膚淺了(非貶義)。
想深入研究 JVM,不錯,很值得鼓勵。
JVM 作為一個工業級的運作平台,確實非常優秀,值得去研究。但是,JVM不是一切,想提升自己,不能把自己侷限住了。
你可以研究研究編譯原理、電腦體系結構、演算法與資料結構、電腦圖形學…
開闊自己的思維。
現在的問題不是需要對JVM了解多深,而且,如果只研究JVM,你根本不會研究的太深的。就想你描述的,看到後面就比較難理解了,程式編譯和程式碼最佳化、JMM和執行緒安全與鎖優化的,不能說明是java沒學好,而是你其它只是太薄。
其次,不在於你學會了多少,而在於你用會了多少。
(PS:插播廣告,我的新書《代碼之謎》會有不少章節介紹對代碼思想的 非常規 使用)
舉個栗子:
你正在開發一個網盤系統,或是圖床系統,在這些系統中,為了提高效率,都會有一個妙傳功能。即:當伺服器已經存在某個檔案時,則不需要重複上傳。
當 A 上傳了一個文件,例如 XXX老师高清无码1080p.rmvb
,這個文件文件太火了,不只 A,還有其他宅男 B C D 都上傳了這個文件。但是,B C D 不需要再次重新上傳,只需要指向這個檔案。
以上都是廢話,是個程式設計師都懂。
那個現在問題來了,要如何處理使用者的刪除操作呢?
現在我們要實現這樣的一個功能,如果 A B C D 都刪除了這個文件,那麼我們在伺服器把這個文件刪除。但是,這樣 A B C D 其中任何人沒有刪除這個文件,則在伺服器保留這個文件。
以上話多讀幾遍,是不是特別熟悉。
對,就是 GC。所以,這個文件,何時被刪除,何時被保留,怎麼樣效率高,怎麼樣並發好,我們都可以透過研究 JVM 的 GC 演算法來搞定。
例子有些不恰當,只是為了把問題說明白。
GC 演算法不僅限於 GC。
不要讓知識束縛了自己的思維。
阿神2017-04-17 12:11:05
如果以後只是想往Android方面發展,可能不需要特別深入的了解。
不過隨著你使用java的深入,對你目前可能還覺得難理解的程式編譯和程式碼最佳化等部分的理解是水到渠成的事情。