![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
jvm
文章平均质量分 91
java虚拟机介绍。
Pingszi
这个作者很懒,什么都没留下…
展开
-
3.HotSpot虚拟机对象管理
1.对象的创建1.1类型检查虚拟机遇到一条new指令时, 首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用, 并且检查这个符号引用代表的类是否已被加载、 解析和初始化过。 如果没有, 那必须先执行相应的类加载过程。1.2分配内存在类加载检查通过后, 虚拟机将为新生对象分配内存。 对象所需内存的大小在类加载完成后便可完全确定, 为对象分配空间的任务等同转载 2017-09-27 08:47:59 · 897 阅读 · 0 评论 -
6.调优实战-优化idea启动速度
1.需要解决的问题A.idea启动时间很长,大于1分钟;B.idea启动非常占用cpu,超过80%(电脑cpu比较旧);2.准备工作2.1 idea启动初始配置A.配置文件IntelliJ IDEA\bin\idea64.exe.vmoptionsB.配置信息//**jvm堆初始内存-Xms128m//**jvm堆最大可用内存原创 2017-10-09 18:22:17 · 18896 阅读 · 11 评论 -
7.类文件结构
1.概述实现语言无关性的基础是虚拟机和字节码存储格式。 Java虚拟机不和包括Java在内的任何语言绑定, 它只与“Class文件” 这种特定的二进制文件格式所关联, Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。 任一门功能性语言都可以表示为一个能被Java虚拟机所接受的有效的Class文件。2.class文件结构Class文件是一组以8位字节为原创 2017-10-17 09:01:58 · 928 阅读 · 0 评论 -
13.线程安全与锁优化
1. 线程安全当多个线程访问一个对象时, 如果不用考虑这些线程在运行时环境下的调度和交替执行, 也不需要进行额外的同步, 或者在调用方进行任何其他的协调操作, 调用这个对象的行为都可以获得正确的结果, 那这个对象是线程安全的 。1.1 Java语言中的线程安全按照线程安全的“安全程度” 由强至弱,将Java语言中各种操作共享的数据分为以下5类: 不可变、绝对线程安全、 相对线程转载 2017-10-24 19:19:56 · 954 阅读 · 0 评论 -
12.Java内存模型与线程
1. 硬件一致性2. Java内存模型Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM) 来屏蔽掉各种硬件和操作系统的内存访问差异, 以实现让Java程序在各种平台下都能达到一致的内存访问效果。2.1 主内存与工作内存Java内存模型的主要目标是定义程序中各个变量的访问规则, 即在虚拟机中将变量存储到内存和从内存中取出变量这样转载 2017-10-24 18:33:02 · 939 阅读 · 0 评论 -
11.晚期(运行期) 优化
1.概述Java程序最初是通过解释器(Interpreter) 进行解释执行的, 当虚拟机发现某个方法或代码块的运行特别频繁时, 就会把这些代码认定为“热点代码” (Hot Spot Code) 。 为了提高热点代码的执行效率, 在运行时, 虚拟机将会把这些代码编译成与本地平台相关的机器码, 并进行各种层次的优化, 完成这个任务的编译器称为即时编译器(Just In Time Compil转载 2017-10-24 15:11:19 · 983 阅读 · 0 评论 -
9.早期(编译期) 优化
1.概述Java语言的“编译期”,可能是指一个前端编译器把*.java文件转变成*.class文件的过程; 也可能是指虚拟机的后端运行期编译器(JIT编译器, Just In Time Compiler) 把字节码转变成机器码的过程; 还可能是指使用静态提前编译器(AOT编译器, Ahead Of Time Compiler) 直接把*.java文件编译成本地机器代码的过程。前端编转载 2017-10-20 10:44:42 · 978 阅读 · 0 评论 -
8.字节码指令
1.简介Java虚拟机的指令由一个字节长度的、 代表着某种特定操作含义的数字(称为操作码, Opcode) 以及跟随其后的零至多个代表此操作所需参数(称为操作数, Operands) 而构成。Java虚拟机采用面向操作数栈,大多数的指令都不包含操作数, 只有一个操作码。字节码指令集是一种具有鲜明特点、 优劣势都很突出的指令集架构, 限制了Java虚拟机操作码的长度为一个字节(即0~转载 2017-10-18 08:40:31 · 1075 阅读 · 0 评论 -
4.垃圾收集器与内存分配策略
1. 简介垃圾收集(Garbage Collection,GC)1.1 使用场景A.排查各种内存溢出、 内存泄漏问题时,B.垃圾收集成为系统达到更高并发量的瓶颈, 需要对这些“自动化” 技术实施必要的监控和调节。1.2 回收的内存区域A.程序计数器、 虚拟机栈、 本地方法栈随线程而生,方法结束或者线程结束, 内存就回收了;B.Java堆和方法转载 2017-09-28 10:17:10 · 889 阅读 · 0 评论 -
1.编译openjdk1.8源码
openjdk编译步骤,先编译openjdk1.7,未成功后转而重新编译openjdk1.81.安装依赖:yum -y install alsa-lib alsa-lib-devel libXrender libXrender-devel libXi-devel libXt-devel libXtst-devel cups cups-devel1.1.安装oracle 1.原创 2017-09-25 18:05:26 · 2223 阅读 · 0 评论 -
2.JVM运行时数据区域
内存划分java虚拟机按照运行时内存使用区域划分图程序计数器(Program Counter Register) 程序计数器就是记录当前线程执行程序的位置,改变计数器的值来确定执行的下一条指令,比如循环、分支、方法跳转、异常处理,线程恢复都是依赖程序计数器来完成。 Java虚拟机多线程是通过线程轮流转载 2017-09-26 09:02:29 · 898 阅读 · 0 评论 -
5.虚拟机性能监控与故障处理工具
1.概述定位一个系统问题的时候, 知识、 经验是关键基础, 数据是依据, 工具是运用知识处理数据的手段。 这里说的数据包括: 运行日志、 异常堆栈、 GC日志、 线程快照(threaddump/javacore文件) 、 堆转储快照(heapdump/hprof文件) 等。2.JDK的命令行工具 目录:\jdk\jdk1.8.0_144\bin\2.1.转载 2017-09-29 08:44:18 · 1003 阅读 · 0 评论