Heim > Fragen und Antworten > Hauptteil
一直不是很理解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的深入,对你目前可能还觉得难理解的程序编译和代码优化等部分的理解是水到渠成的事情。