wolf_love666的博客

微信公众号【小诚信驿站】 author:wolf_love666

排序:
默认
按更新时间
按访问量
RSS订阅

Java代码的执行篇

(1)代码编译为class文件(javac编译) (2)装载class(通过classLoader) (3)执行class 解释执行 编译执行 client compiler server compiler (1)代码编译为...

2019-06-16 12:10:43

阅读数 213

评论数 0

JVM---高效并发与锁优化

高效并发: 高效并发前提是并发的正确性,如何保证并发的正确性和如何实现线程安全? 线程安全定义: 当多个线程访问一个对象时候,如果不用考虑这些线程在运行时候环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安...

2019-01-30 20:12:30

阅读数 129

评论数 0

JVM---内存模型是如何处理高并发问题

并发应用场景: TPS: 衡量一个服务器性能的高低好坏,TPS(Transactions Per Second)是最重要的指标,它代表着一秒内服务端平均能响应的请求总数,而TPS与程序并发能力有关。 物理计算机中的并发问题: 处理器与内存交互,读取运算数据,存储运算结果。如何提高让并发执行若干个运...

2019-01-30 19:24:43

阅读数 256

评论数 0

JVM---JIT编译优化技术

课前提问: 解释器与编译器的区别和联系 解释器先执行,省去编译的时间,立即执行。 程序运行后,编译器将代码编译成本地代码。 如果内存限制较大,可以使用解释执行节约内存,反之可以使用编译执行来提升效率。 C1和C2编译器的全称是什么? Client Compiler和Server Compile...

2019-01-29 12:57:20

阅读数 118

评论数 0

JVM---编译器原理

一、具有代表性的常见编译器 前端编译器:sun的javac、Eclipse JDT中的增量式编译器ECJ JIT编译器:HotSpotVM的C1/C2编译器 AOT编译器:GNU Compiler for the Java(GCJ)/Excelsior JET。 二、编译过程 可点击这里查看...

2019-01-28 17:31:29

阅读数 101

评论数 0

JVM---10分钟入门代码执行过程(字节码执行引擎剖析)

1、物理机与虚拟机的区别 虚拟机是一个相对于物理机的概念。两种机器都有代码执行能力,区别是物理机的执行引擎是直接建立在处理器,硬件、指令集和操作系统层面上的,而虚拟机的执行引擎是自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。 2、运行时栈帧结...

2019-01-24 19:59:40

阅读数 89

评论数 0

JVM---数据存储和访问

一、公有设计与私有实现 在满足Java虚拟机规范的前提下,可以进行具体实现的修改和优化,虚拟机也是认可的。进而获得更高的性能、更低的内存消耗或者更好的可移植性。 虚拟机实现的方式有两种: 二、Class文件结构的发展 虚拟机规范访问标志在原有基础上增加:ACC_SYNTHETIC、ACC_ANN...

2019-01-23 18:35:51

阅读数 56

评论数 0

JVM---数据存储和访问(字节码)

Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)构成。 引申------操作数栈还是寄存器的架构区别。 操作码的长度为一个字节(0~255) 如果要将一个16位长度的无符号整数使用...

2019-01-23 17:54:46

阅读数 55

评论数 0

JVM---数据存储和访问(类文件结构)

一、类文件结构 先看下整体结构图(常量池和内容信息也在字节码文件信息中由于特殊内容比较多,所以单独拉出来) 计算机只识0和1 代码编译的结果从本地机器码到字节码是一个很重大意义的转变。 文件的数据项 主次版本号 常量池: 包含两大类常量:字面量(Literal)和符号引用(Symbolic ...

2019-01-22 17:51:07

阅读数 116

评论数 1

JVM---问题集

1-高性能硬件上的部署策略(实战链接) 2-集群间同步导致的内存溢出 应用场景:部分数据在不同节点之间共享。读写频繁并且竞争激烈。可以多读,但是不能多写,多写就会导致集群各个节点之间网络交互非常频繁,当网络情况不能满足传输要求,重发数据在内存中不断堆积,很快产生内存溢出。 3-堆外内存导致的溢出错...

2019-01-21 21:23:31

阅读数 30

评论数 0

JVM---工具篇

jps 主要用来输出JVM中运行的进程状态信息,使用场景同时启动了多个虚拟机进程,无法根据进程名称定位时候。 jstack 主要用来查看某个Java进程内的线程堆栈信息 jmap jmap用来查看堆内存使用状况,一般结合jhat使用 jhat Jhat用于对JAVA heap进行...

2019-01-18 19:09:32

阅读数 53

评论数 0

JVM---小白能看懂的内存分配和垃圾回收(有趣的图文教程)

插播一条: 为什么要了解这个,其实我之前也觉得是不是大公司故意提高门槛,故意找事。不就是一个ctrl+c,和一个ctrl+v么?实在不行百度和谷歌呗。事实上,今年到现在写这个东西的时候我发现越想往高处走,你的基础越得扎实。练武不练功到头一场空。而每个人都是会在3年为一个楷,会达到瓶颈。那么如何突破...

2019-01-11 12:53:38

阅读数 292

评论数 0

JVM---小白都能看懂的内存管理(有趣的图文教程)

1、内存如何划分、内存溢出的原因 创建对象new 对象在内存中分布存储的数据结构 对象访问方式(1、句柄池,2、直接指针) 2、实战内存溢出 这里可以参考之前的排查内存使用率高的时候的真实生产环境的一个案例场景 现在我们可以打开jdk自带的Jvisualvm(安装jdk目录bin下...

2019-01-09 17:01:08

阅读数 661

评论数 0

【JVM研习】目录大纲

书中内容来自于深入理解java虚拟机,作者周志明。 会融合自己的知识和理解来记录下来,为了赚钱而奋斗!Day Day Up !!! (一)内存管理 内存如何划分、内存溢出的原因 内存分配和垃圾回收 (二)虚拟机如何执行 数据存储和访问 类加载过程的5个阶段以及工作原理 代码执行和执行的内存管...

2019-01-03 19:06:49

阅读数 2252

评论数 0

提示
确定要删除当前文章?
取消 删除