![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java-Jvm篇
文章平均质量分 85
关于Jvm的一些说明
Alan0517
...
展开
-
Jvm基础篇-09-Java内存模型与线程
多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多场景下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统的速度差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。如果不希望处理器在大部分时间里都处于等待其他资源的空闲状态,就必须使用一些手段去把处理器的运算能力“压榨”出来,否则就会造成很大的性能浪费,而让计算机同时处理几项任务则是最容易想到,也被证明是非常有效的“压榨”手段。原创 2023-06-16 21:19:40 · 471 阅读 · 0 评论 -
Jvm基础篇-08-程序编译与代码优化
在Java技术下谈“编译期”而没有具体上下文语境的话,其实是一句很含糊的表述,因为它可能是指一个前端编译器(叫“编译器的前端”更准确一些)把。java文件转变成.class文件的过程;也可能是指Java虚拟机的即时编译器(常称JIT编译器,Just In TimeCompiler)运行期把字节码转变成本地机器码的过程;还可能是指使用静态的提前编译器(常称AOT编译器,Ahead Of Time Compiler)直接把程序编译成与目标机器指令集相关的二进制代码的过程。前端编译器。原创 2023-06-16 21:05:36 · 155 阅读 · 0 评论 -
Jvm基础篇-07-虚拟机执行子系统--虚拟机字节码执行引擎
执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。在《Java虚拟机规范》中制定了Java虚拟机字节码执行引擎的概念模型,这个概念模型成为各大发行商的Java虚拟机执行引擎的统一外观(Facade)。原创 2023-06-16 20:34:06 · 211 阅读 · 0 评论 -
Jvm基础篇-06-虚拟机执行子系统--虚拟机类加载机制
文章目录1. 简述2. `类加载的时机`3. ` 类加载的过程`3.1 `加载`3.2 `连接--验证`3.2.1 文件格式验证3.2.2 元数据验证3.2.3 字节码验证3.2.4 符号引用验证3.3 `连接--准备`3.4 `连接--解析`3.4.1 类或接口的解析3.4.2 字段解析3.4.3 方法解析3.4.4 接口方法解析3.5 `初始化`4. 类加载器4.1 `双亲委派模型`4.2 破坏双亲委派模型5. Java模块化系统5.1 模块的兼容性5.2 模块化下的类加载器原创 2023-06-16 20:12:18 · 247 阅读 · 0 评论 -
Jvm基础篇-05-虚拟机执行子系统--字节码指令
Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需的参数(称为操作数,Operand)构成。由于Java虚拟机采用面向操作数栈而不是面向寄存器的架构(这两种架构的执行过程、区别和影响将在后面中探讨),所以大多数指令都不包含操作数,只有一个操作码,指令参数都存放在操作数栈中。原创 2023-06-16 19:59:50 · 256 阅读 · 0 评论 -
Jvm基础篇-03-虚拟机性能监控、故障处理工具
基础工具:用于支持基本的程序创建和运行安全工具:用于程序签名、设置安全测试等选项作用keytool管理密钥库和证书。主要用于获取或缓存Kerberos协议的票据授权票据。允许用户 查看本地凭据缓存和密钥表中的条目(用于Kerberos协议)jarsigner生成并验证JAR签名policytool管理策略文件的GUI工具,用于管理用户策略文件(.java.policy),在JDK10中被移除国际化工具:用于创建本地语言文件远程方法调用工具:用于跨Web或网络的服务交互选项作用。原创 2023-06-16 19:43:47 · 781 阅读 · 0 评论 -
Jvm基础篇-02-自动内存管理
对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题。不过,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误、修正问题将会成为一项异常艰难的工作。====从新生代出发-XX:+UseSerialGC 可互相激活新生代 :Serial + 老年代: Serial Old 都是串行-XX:+UseParNewGC 可互相激活。原创 2023-06-16 19:43:18 · 299 阅读 · 0 评论 -
Jvm基础篇-01-Java虚拟机家族起源
Java不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范组成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等多种场合,如下图所示。一次编写,到处运行内存泄漏指针越界。原创 2023-06-16 14:49:01 · 248 阅读 · 0 评论 -
Java-Jvm-06-内存分析工具 jmap,jhat及dump分析
Jvm的基础工具使用原创 2022-12-20 18:17:18 · 716 阅读 · 0 评论 -
Java-Jvm-05-配置远程debug
1. 在java 后面 -jar前面 加上下面参数即可-Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n-Xdebug是通知JVM工作在DEBUG模式下,-Xrunjdwp是通知JVM使用(java debug wire protocol)来运行调试环境。该参数同时了一系列的调试选项:transport指定了调试数据的传送方式dt_socket是指用SOCKET模式,另有dt_shmem指用共原创 2021-09-11 17:39:55 · 275 阅读 · 0 评论 -
Java-Jvm-04-参数调优
对于HandlerPromotionFailure,我们可以这样理解,在发生Minor GC之前,虚拟机会先检查老年代的最大的连续内存空间是否大于新生代的所有对象的空间,如果这个条件成立,Minor GC是安全的。这里的老年代就相当于你的担保人。promotion failure发生在Young GC, 如果Survivor区当中存活对象的年龄达到了设定值,会就将Survivor区当中的对象拷贝到老年代,如果老年代的空间不足,就会发生promotion failure, 接下去就会发生Full GC.原创 2021-01-15 21:10:44 · 564 阅读 · 0 评论 -
Java-Jvm-03-生产相关问题解析(cpu蹦高和OOM分析)
JDK自带的java heap analyze tool,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言OQL,分析相关的应用后,可以通过http://localhost:7000来访问分析结果。不推荐使用,因为在实际的排查过程中,一般是先在生产环境 dump出文件来,然后拉到自己的开发机器上分析,所以,不如采用高级的分析工具比如前面的mat来的高效。对于内存泄露,需要通过内存监控软件查找程序中的泄露代码,而堆大小可以通过虚拟机参数-Xms,-Xmx等修改。原创 2021-01-15 21:10:21 · 307 阅读 · 0 评论 -
Java-Jvm-01-简介
Java 1.8之后原创 2021-01-14 21:04:43 · 178 阅读 · 0 评论