这周读了一下深入JVM的书,读了前两章。
第一章主要讲了Java的一些历史,包括什么时候Java诞生的,Java为什么会创建虚拟机(当时的招牌就是要创造出跨平台性),以及一些Java的JDK升级。最后介绍了一下64位的虚拟机。64位虚拟机和32位虚拟机对比,由于指针膨胀和各种数据类型,它要在内存上就比32位虚拟机高出很多,而且在运行测试上,64位的虚拟机在各项数据上都要比32的虚拟机低很多,但在JDK1.6版本之后,sun公司提供了对普通对象指针的压缩功能,降低内存的消耗。
第二章主要讲了Java虚拟机的内存情况。内存主要分为方法去、虚拟机栈、本地方法区、堆、程序计数器这几个模块。后面介绍了内存溢出产生的几种情况:当线程请求的栈深度大于虚拟机允许的深度时;当扩展无法得到足够内存时;在堆内存中没有内存完成实例分配。