欢迎来到天天文库
浏览记录
ID:32658065
大小:145.18 KB
页数:26页
时间:2019-02-14
《jvm,java虚拟机,内存机制,线程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JVM的机制学习代码编译为classSunjdk中的javac装载!classClassLoaderlentcompiler执行class-^Servercompiler内存空间方法区,堆,JVM方法栈,木地方法栈,PC奇存器j内存分配SS内〃回收堆上分配栈上分配TLAB分配Copyingark-Sweepark-Compact算法并行回收GC串行GC并行GC内存状态分析代冋收实现GC参数G1新生代可用GC(^_IIVI:KFullGCMinorGC触发机制串行Mark-Swccp-CompactIMrCompact并发Mar
2、k-Sweep交互状态solejstat.jmap,MATJVM标准结构类加载子系统内存空间方法区Java堆本地方法栈A-•垃圾收集器I;/A指令计数器及其他隐含计数器Z--KXI—1/执行引擎<■==>本地方法接口A―本地方法库Java栈Java代码执行机制源码编译机制JVM规范中定义了class文件的格式,JDK在编译java源码时,使用了javac,javac编译的步骤:1.分析和输入到符号表(ParseAndEnter)Parse做的是词法和语法的分析。词法分析:将代码字符串转变为token序列语法分析:将根据语法由
3、token序列生成抽象语法树Enter将符号输入到符号表,通常包括确定类的超类和接口,添加默认构造器等。2.注解处理3.语义分析和生成class文件通常生成class文件不知包括字节码,一般包扌舌结构信息,元数据,方法信息。下面是一个例子:Compiledfrom"Foo.java"〃类/继承的超类/实现的接口的声明信息publicclassFooextendsjava」ang.ObjectSourceFile:"Foo.java"//class文件格式版本号,majorversion50表示jdk6,49为jdk5只有高版本
4、能执行低版本的class文件minorversion:0majorversion:50〃常量池,存放了所有的Field名称,方法名,方法签名,类型名,代码及class文件中的常量值Constantpool:const#1=Methodconst#2=Fieldconst#3=classconst#4=Stringconst#5=Method#7.#27;//java/lang/Object.HM:()V#6.#2&//Foo.count:I#29;//java/lang/Exception#30;//countov
5、erflow#3.#31;//java/lang/Exception.Mu:(Ljava/lang/String;)Vconst#6=classconst#7=classconst#8=Ascizconst#9二Ascizconst#10=Ascizconst#11=int1000;const#12=Ascizconst#13=Ascizconst#14=Ascizconst#15=Ascizconst#16=Ascizconst#17=Ascizconst#18=Ascizconst#19二Ascizconst#
6、20=Ascizconst#21=Ascizconst#22=Ascizconst#23=Ascizconst#24=Ascizconst#25=Ascizconst#26=Asciz#32;//Foo#33;//java/lang/ObjectMAX_COUNT;I;ConstantValue;count;;()v;Code;LineNumberTable;LocalVariableTable;this;LFoo;;bar;()1;StackMapTable;Exceptions;;SourceF
7、ile;Foo.java;const#27=NameAndType#13:#14;//nM:()Vconst#28=NameAndType#12:#9;//count:Iconst#29=Ascizconst#30=Ascizjava/lang/Exception;countoverflow;const#31=NameAndType#13:#34;//Hn:(Ljava/lang/String;)Vconst#32=Ascizconst#33=Ascizconst#34=AscizFoo;java/la
8、ng/Object;(Ljava/lang/String;)V;〃将符号输入到符号表时生成的默认构造器方法publicFoo();Signature:()VLineNumberTable:line1:0LocalVariableTable:StartLengthSlotNam
此文档下载收益归作者所有