【深入浅出-JVM】(1):Java 虚拟机
Java 虚拟机地位 种类 BEA的JRockit Solaris的Exact VM IBM的J9 感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,您的鼓励是作者写作最大的动力。 作 者 : "@mousycoder" 原文出处 : http://mousycod ...
程序员文章站2023-11-04《深入理解Java虚拟机》-----第10章 程序编译与代码优化-早期(编译期)优化
概述 Java语言的“编译期”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程;也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compiler )把字节码转变成机器码的过程 ...
程序员文章站2023-10-28Java虚拟机GC日志分析
本文研究的主要是java虚拟机中gc日志的理解问题,具体如下。 一、日志分析 理解gc日志是处理java虚拟机内存问题的基本技能。 通过在java命令种加入参数
程序员文章站2023-10-20Java虚拟机内存管理小结
...
程序员文章站2023-10-16java 虚拟机原理
什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机,它屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码,ByteCode), 就可以在多种平台上不加修改地运行。这背后其实就是JVM把字节码 ...
程序员文章站2023-09-29详细解析Java虚拟机的栈帧结构
栈帧是Java虚拟机中的虚拟机栈的基本元素,它也是用于支持Java虚拟机进行方法调用和方法执行背后的数据结构,了解了它就可以更好地理解Java虚拟机执行引擎是如何运行的。 ...
程序员文章站2023-09-28Java虚拟机内存结构及编码实战
深度解析了JVM的内存结构,图文并茂,生动形象。并编写多个示例代码,展示了JDK中各个不同的内存结构,详细讲解了不同版本JDK对内存结构实现的区别。 ...
程序员文章站2023-09-28Java虚拟机的意义
什么是Java虚拟机? 作为程序员,大家都知道写的代码都是在Java虚拟机上运行的,但大家是否知道,Java虚拟机又是什么呢? 先看看网上搜到有关JAVA虚拟机的介绍 : 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆 ...
程序员文章站2023-08-02Java虚拟机(JVM)你只要看这一篇就够了!
1. Java 内存区域与内存溢出异常 1.1 运行时数据区域 根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。 1.1.1 程序计数器 内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、 ...
程序员文章站2023-04-07了解java虚拟机—CMS回收器(8)
CMS(Concurrent Mark Sweep)回收器它使用的是标记清除算法,同时又是一个使用多线程并行回收的垃圾回收器。 CMS主要工作步骤CMS工作时主要步骤有初始标记、并发标记、预清理、重新标记、并发清除和并发重置。其中初始标记和重新标记是独占系统资源的,而预清理、并发标记、并发清除和并发... ...
程序员文章站2023-03-25Java虚拟机二:使用jvisualvm工具远程监控tomcat内存
jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的java进程的内存占用,线程状态等信息。 一、配置tomcat 在tomcat的 catalina.sh 文件开头加上如下配置 : JAVA_OPTS="-Dcom. ...
程序员文章站2023-02-26Java虚拟机三:OutOfMemoryError异常分析
根据Java虚拟机规范,虚拟机内存中除过程序计数器之外的运行时数据区域都会发生OutOfMemoryError(OOM),本文将通过实际例子验证分析各个数据区域OOM的情况。为了更贴近生产,本次所有例子都是通过调用接口触发,并使用jvisualvm工具监控tomcat内存进行分析。 一、Java堆溢 ...
程序员文章站2023-02-26读书笔记:深入理解java虚拟机(二)创建对象的时候需要访问哪几块内存
@ "TOC" 对象在内存中如何储存 对象访问在java语言中无处不在,是最普通的程序行为,但即使是最简单的访问,也会涉及到java栈,java堆,方法去三个最重要的内存区域的关联关系,比如下面这段代码: 假设这句代码出现在方法体中,那==Object obj==这部分的语义将会放映到java的本地 ...
程序员文章站2023-02-26读书笔记:深入理解java虚拟机(一)虚拟机的运行时的数据区域
最近在看深入了解java虚拟机第一版(周志明著),特此写读书笔记,整理其中重要的东西和自己的理解。 ”java与c++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出去” 这堵墙所说就是虚拟机,书中也提到了为什么要学习虚拟机: 对于Java程序员来说,在虚拟机的 ...
程序员文章站2023-02-26浅谈Java虚拟机内存中的对象创建,内存布局,访问定位
参考于 深入理解Java虚拟机 这里介绍HotSpot虚拟机(自带的虚拟机) 1.对象的创建 对于程序员来说,创建对象的方法: 对于虚拟机来说: 1.首先遇到new指令,先去方法区(一块内存,有些人也叫永久代,不过书上说了这种叫法其实不是很准确)检查类有没有加载过了,如果没有,虚拟机去加载,如果加载 ...
程序员文章站2023-02-18《深入理解Java虚拟机》-----第12章 Java内存模型与线程
概述 多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。如果不希望处理器在大部分时间里 ...
程序员文章站2022-12-21深入理解Java虚拟机(第三版)-14. 线程安全与锁优化
14. 线程安全与锁优化 1. 什么是线程安全? 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替进行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的 2. Java语言中的线程安全 我们将J ...
程序员文章站2022-12-08深入理解Java虚拟机(第三版)-13.Java内存模型与线程
13.Java内存模型与线程 1.Java内存模型 Java 内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到主内存和从内存中取出变量值的底层细节 该变量指的是 实例字段、静态字段、和构成数组对象的元素,不包含线程私有的 局部变量和方法参数 Java线程 -》 工作内 ...
程序员文章站2022-12-08深入拆解Java虚拟机,就靠这本电子书了
本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。传送门:https://mp.weixin.qq.com/s/osB-BOl6W-ZLTSttTkqMPQ 前 ...
程序员文章站2022-11-22Java虚拟机知识点【GC】
一、垃圾收集算法 1. 标记 清除算法 首先标记出所有需要回收的对象,然后统一回收所有被标记的对象。该算法的 效率不高 ,而且存在 内存碎片 的问题。 2. 复制算法 将内存按容量划分为大小相等的两块,每次只使用其中一块进行内存分配,当这块内存用完了, ...
程序员文章站2022-11-08