java虚拟机

java虚拟机

1、如果执行的是Native方法,程序计数器的数值为空(Undefined),此内存区域是惟一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域
2、Java虚拟机栈为线程私有,生命周期与线程相同,每个方法执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等信息。
3、本地方法栈和虚拟机栈作用非常相似,虚拟机栈为虚拟机执行Java方法(字节码)服务,本地方法栈则为虚拟机使用到的Native方法服务。
	有的虚拟机(比如Sun HotSpot虚拟机)直接把本地方法栈和虚拟机栈 合二为一。
4、任何一个对象的finalize()方法都只会被系统自动调用一次 ,因此在finalize方法中和引用链上任何一个对象建立关联能也只能逃脱一次回收,在下次标记中也会死亡
5、Integer常量池为-128-127

参数

-XX:PretenureSizeThreshold 令大于这个设置值的对象直接在老年代分配(只对Serial和ParNew两款收集器有效,一般不需要自己设置,如果必须的话可以考虑ParNew和CMS的收集器组合)
-XX:DisableExplicitGC 屏蔽掉显式GC即System.gc()

Sun JDK监控和故障处理工具

jps   JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程
jstat JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据
jinfo Configuration Info for Java 显示虚拟机配置信息
jmap Memory Map for Java 生成虚拟机的内存转储快照(heapdump文件)
jhat JVM Heap Dump Browser 用于分析heapdump文件,会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果
jstack Stack Trace for Java 显示虚拟机的线程快照

HotSpot虚拟机中有7个垃圾收集器Serial、ParNew、Parallel Seavenge、G1(Garbage First)、CMS(Concurrent Mark Sweep)、Parallel Old、Serial Old(MSC)
在这里插入图片描述
名词解释

并行(Parallel):多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态
并发(Concurrent):用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个CPU上

新生代GC(Minor GC):指发生在新生代的垃圾手机动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。
老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major Gc,经常会伴随至少一次的Minor GC(但非绝对的,在Parallel Scavenge收集器的收集策略里就有直接进行Major GC的策略选择过程)。Major GC的速度一般会比Minor GC慢10倍以上

线程长时间停顿的主要原因:等待外部资源(数据库连接、网络资源、设备资源等)、死循环、锁等待(活锁和死锁)

魔数:每个Class文件的头4个字节称为魔数(Magic Number),唯一的作用是确定这个文件是否为一个能被虚拟机接受的Class文件。使用魔数而不是扩展名来进行识别主要是基于安全方面的考虑,因为文件扩展名可以随意改动。Class文件的魔数值为:0xCAFEBABE
紧接着魔数的4个字节存储的是Class文件的版本号:第5和第6个字节是次版本号(Minor Version),第7和第8个字节是主板本号(Major Version)。Java的版本号从45开始

Code属性:Class文件中最重要的一个属性,如果把一个Java程序中的信息分为代码(Code,方法体内的Java代码)和元数据(Metadata,包括类、字段、方法定义和其他信息)两部分,那么在整个Class文件中,Code属性用于描述代码,所有的其他数据项目都用于描述源数据。了解Code属性是学习关于字节码执行引擎内容的必要基础

字段表(field_info):用于描述接口或者类中声明的变量
	字段(field)包括类级变量以及实例级变量,但不包括在方法内部声明的局部变量。
	Java中描述一个字段可以包括:字段的作用域(public、private、protected修饰符)、是实例变量还是类变量(static修饰符)、可变性(final)、并发可见性(volatile修饰符,是否强制从主内存读写)、可否被序列化(transienet修饰符)、字段数据类型(基本类型、对象、数组)、字段名称

方法表的结构和字段表一样,依次包括了访问标识(access_flags)、名称索引(name_index)、描述符所有(descriptor_index)、属性表集合(attributes)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值