首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

读《深入理解Java虚拟机》-笔记03

《深入理解Java虚拟机:JVM高级特性与最佳实践》第2版

第5章 调优案例分析与实战

23.高性能硬件上的程序部署策略

通常用集群32位的服务器来代替单个64位的服务器,这样能尽量发挥出硬件的性能:

(1)在64位的程序中,由于指针膨胀以及内存对齐,会造成内存浪费;

(2)在单个64位的服务器宕机的时候,产生的快照很大,不好分析;

(3)大内存的服务器,意味着要对更大的内存区域进行垃圾收集,那么会增大GC的时间,会加长服务器的停顿。

24.通常情况下,用户应用的CPU占用率应该占主要地位。换句话说,系统占用绝大多数的CPU资源的程序不是应用系统本身,是不正常的。

25.对象头包括两部分信息:Mark Word(标记字段)和 Klass Pointer(类型指针)。

26.VisualGC监视曲线重的编译时间(Compile Time)

这里的编译时间是指虚拟机的JIT编译器编译热点代码的耗时。

如果一段Java方法被调用次数达到一定程度,就会被判定为热代码,交给JIT编译器即时编译为本地代码,提高运行速度。(甚至有可能在运行期动态编译比C/C++的编译期静态编译出来的代码更高效。)

27.几个虚拟机配置参数

-Xms=128m JVM初始分配的堆内存

-Xmx=512m JVM最大允许分配的堆内存

-XX:PermSize=64M JVM初始分配的非堆内存

-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配

非堆内存是JVM留给自己用的。方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。

老年代也在非堆内存中。

-XX:+UseConcMarkSweepGC

-XX:CMSInitiatingOccupancyFraction=85

value=85意味着第一次CMS垃圾收集会在老年代被占用85%时被触发。

第6章 类文件结构

28.平台无关性的基础

各种不同平台的虚拟机使用统一的程序存储格式——字节码(ByteCode)。

29.Java虚拟机提供的语言无关性

不同语言程序,通过相应的编译器,生成统一格式的字节码。

30.Class文件是一组以8位字节为基础单位的二进制流

字节序,即字节的顺序,也就是大于一个字节类型的数据在内存中的存放顺序。

栈底 (高地址)

---------------

0x06 --低位

0x08 --高位

---------------

栈顶 (低地址)

该字段的值为0x0806。

31.虚拟机拒绝执行超过其版本号的Class 文件

Class文件的头4个字节称为魔数,紧接着的4个字节存储Class文件的版本号。

一个团队分工写不同模块的代码,需要使用相同Java版本。

未完待续...

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180715G0EZRX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券