通常我们所说的Java虚拟机是JVM规范的一个实现,商业的主要有Sun公司的,IBM的,以及WebLogic的实现(Oracle收购),Apache有一个开源实现。
编写Java程序的一般程序员是不需要深入了解Java虚拟机规范以及每个实现的内部细节。但是总有程序员或者公司需要深入掌握Java虚拟机的细节。换 句话来说,如果用了N年Java的程序员不了解Java虚拟机的细节,那么还真值得反思。不了解机理,就不知道JVM的启动参数的深刻内涵,就不知道啥叫 性能调优,就知道人云亦云,也没有自己的思考。
由于Java虚拟机是一个“虚拟的机器”,因此,其一些概念特征更加抽象一些,但是只要是建立在某个操作系统上的实现,那么其上的各类问题,都与普通的 C/C++程序无大的区别。从这个思路去考虑,其实性能问题关键在于虚拟机的运作机制以及特别要提出的垃圾回收(GC)问题。
先主要说一下GC,C/C++这类语言没有GC的原生支持,但是不代表就不能使用GC技术,可以说C++程序员完全可以在自己的程序里实现一个GC,说白 了GC不就是决定如何管理内存的分配与回收嘛,引用计数其实就是一类GC技术,但是JVM里面的GC需要一个多线程的支持,也就是GC线程,啥时候去启动 GC,啥时候去GC,GC的具体策略,分带GC等等,是一个专业的话题,GC技术在脚本语言里也广泛的应用。Google V8,很多GC策略都是借鉴JVM中常用的GC策略。
深入Java虚拟机以及高效Java编程
最新推荐文章于 2024-10-16 10:13:45 发布