我从学校毕业后进入如今的公司工作到现在,最初因为自己基础薄弱,所以,结合公司的项目囤了许多书、从数据结构、网络、系统设计、微服务、linux、设计模式、多线程和数据库等,随着时间的推移我已经可以独立的负责一个服务的后端开发,但是对于java的性能优化仍然停留在设计、代码和数据库优化阶段,并没有做过JVM相关优化。
因为JAVA应用总是需要在JVM虚拟机之上执行的,如果对JVM虚拟机优化必能在某种程度上提升JAVA应用的性能。JVM通常能够在软件开发后期进行,如在开发完毕或者是软件开发的某一里程碑阶段。 作为JAVA应用的执行平台。JVM的各项參数将会直接影响JAVA程序的性能。例如,JVM的堆大小,GC垃圾回收策略等等。 而要进行JVM层面的调优就必需要求开发者对JVM的执行原理和基本内存结构有一定的了解。如,堆内存的结构,GC的种类等。然后,根据引用程序的特点。设置合理的JVM启动參数。而我那时对jvm的理解还停留在它的基本构成阶段,只知道 JVM运行时数据区,分为线程共享部分(方法区、堆)和线程隔离区(虚拟机栈、本地方法栈和程序计数器) ,直到参与了一个数据类的项目,涉及到一个爬虫的子项目,虽然爬虫不是我写的,但是我需要对这个爬虫从公开渠道收集的数据做处理入库,还要校对数据准确性,就需要多次测试,自然避免不了需要我自己去启动爬虫项目来爬取数据做测试,但是这个项目启动时就需要在idea的vm options中设置相关参数值,而我只知道那是设置jvm运行参数用的,对为什么要设置这些值一无所知,这就引发了我对这个设置的好奇心。
因此,就打算买本关于java虚拟机优化的书来看看,我从豆瓣、当当、淘宝、京东这几个平台乃至于一些视频资源中,都发现了《深入理解java虚拟机》第二版这本获得极度好评的书,本来想囤周的java虚拟机第二版,有一天看到了同事恰好有这本书,便借了同事的看了下,从Java虚拟机的内存管理(内存区域划分、垃圾收集的算法和实现、性能监控和调优实战)讲起,接着介绍虚拟机如何执行(类文件的结构、类加载机制、字节码执行引擎介绍),最后还介绍了编译优化和高效并发部分。对Java开发有一个系统清晰的阐述,使得我们对虚拟机如何执行和高效执行我们所写的代码有更深层的认识,在发生内存溢出或者性能相关问题时能提供很好的理论基础。总之,是难得的一本中文技术好书。只是因为第二版时间太久了,虽然,是好书,但是,技术是会过时的,我希望了解新的况且我同事有第二版我也大致看过了,所以,我一直期待作者出新的,为此,我还去作者微博催了几次,每隔几个月就会有一点进展,直到现在,书已经新鲜出炉,必定又会是一本经典畅销书,我十分期待。