写点什么

JIT

0 人感兴趣 · 27 次引用

  • 最新
  • 推荐
https://static001.geekbang.org/infoq/c9/c90004189237e99e201afb78d3ef27e8.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

复习前端:JavaScript V8 引擎机制

V8 是谷歌推出的开源 JavaScript 引擎,它是用 C++ 编写的,支持 Google Chrome、Chromium 网络浏览器和 NodeJS,它负责与环境交互并生成字节码来运行程序。

https://static001.geekbang.org/infoq/17/176ab47e64cc1c931a2ad4011c8b16a2.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

高性能且小巧的脚本语言 LuaJIT

Just-In-Time or JIT 是指在程序运行时进行代码编译的技术,像 Java,Python(这里指PyPy)、LuaJIT 都引入了这种技术。

https://static001.geekbang.org/infoq/e5/e55eeec852df311da3442e55ab40086c.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Java 即时编译(JIT)原理与调优

编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序,例如C++,Golang等常见的编译型语言,都是在程序运行前将代码生成为机器码,然后运行在目标机器上,不过编译的时候要针对目标机器的CPU分别进行编译。

https://static001.geekbang.org/infoq/22/2210fa9bd01aa455864f6d5898c6564b.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

跟小师妹一起学 JVM- 系列文章

用户头像
程序那些事
2021-11-28

JVM是JAVA之所以强大的核心,他让普通程序员摆脱了手动分配和释放对象的烦劳,从C++那复杂的对象管理中释放出来,专注于核心业务的编写,从此以后普通程序员也能写出专业C++程序员那么完美的程序。

JIT- 动态编译与 AOT- 静态编译:java/ java/ JavaScript/Dart 乱谈

用户头像
zhoulujun
2021-08-24

JIT 编译保持了平台无关性,但是付出了一定代价。因为在程序执行时进行编译,所以编译代码的时间将计入程序的执行时间。AOT指运行前编译,这两种编译方式的主要区别在于是否在“运行时”进行编译

JIT- 动态编译与 AOT- 静态编译:java/ java/ JavaScript/Dart 乱谈

用户头像
zhoulujun
2021-08-07

JIT 编译保持了平台无关性,但是付出了一定代价。因为在程序执行时进行编译,所以编译代码的时间将计入程序的执行时间。AOT指运行前编译,这两种编译方式的主要区别在于是否在“运行时”进行编译

https://static001.geekbang.org/infoq/fc/fc44036c73b48382e85282d38bad8cd3.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

🏆「作者推荐!」【Java 技术之旅】彻底你明白什么是 JIT 编译器(Just In Time 编译器)

用户头像
洛神灬殇
2021-07-30

我们都知道开发语言整体分为两类,一类是编译型语言,一类是解释型语言。那么你知道二者有何区别吗?编译器和解释器又有什么区别?

https://static001.geekbang.org/infoq/6c/6c150289c4f9194014ca3c68ccabb5e7.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

让 JavaScript 在 WebAssembly 上快速运行

用户头像
代码先生
2021-06-07

为了做到这一点,我们将JS引擎部署为WebAssembly模块,这使得它可以在不同类型的机器架构中移植。有了WASI,我们也可以使它在不同的操作系统中进行移植。

https://static001.geekbang.org/infoq/46/460378837f6d5d4c70b36e4d84ca24f5.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

☕️【Java 技术之旅】深入学习 JIT 编译器实现机制(原理篇)

用户头像
洛神灬殇
2021-06-01

Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”(hotspot code)。正因为如此,我们的hotspot的虚拟机就是因此而得名。

https://static001.geekbang.org/infoq/a3/a3f80d99b8c9e0d932a28385db97fc5e.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

troubleshoot 之: 分析 OutOfMemoryError 异常

用户头像
程序那些事
2020-08-14

java.lang.OutOfMemoryError应该java应用程序中非常常见的一个的错误了。

https://static001.geekbang.org/infoq/45/45a9ec85f6b9132f82d92e90123dd72c.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JVM 系列之: 再谈 java 中的 safepoint

用户头像
程序那些事
2020-08-07

java程序里面有很多很多的java线程,每个java线程又有自己的stack,并且共享了heap。这些线程一直运行呀运行,不断对stack和heap进行操作。

https://static001.geekbang.org/infoq/a3/a31dd11e80462e8952c716981d483e30.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JVM 系列之: 从汇编角度分析 NullCheck

用户头像
程序那些事
2020-08-06

之前我们在讲Virtual call的时候有提到,virtual call方法会根据传递的参数实例的不同而进行优化,从而优化成为classic call,从而提升执行效率。

https://static001.geekbang.org/infoq/1c/1cb95ce1e63166626b0481992b47accd.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JVM 系列之: 从汇编角度分析 Volatile

用户头像
程序那些事
2020-08-05

Volatile关键字对熟悉java多线程的朋友来说,应该很熟悉了。Volatile是JMM(Java Memory Model)的一个非常重要的关键词。通过是用Volatile可以实现禁止重排序和变量值线程之间可见两个主要特性。

https://static001.geekbang.org/infoq/9b/9b5f121b5b4ac9c260e1d2f5f226e006.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JVM 系列之:JIT 中的 Virtual Call 接口

用户头像
程序那些事
2020-08-04

上一篇文章我们讲解了Virtual Call的定义并举例分析了Virtual Call在父类和子类中的优化。

https://static001.geekbang.org/infoq/3e/3e49d3c8051edc11841a5c9913fceb3e.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JVM 系列之:JIT 中的 Virtual Call

用户头像
程序那些事
2020-08-03

什么是Virtual Call?Virtual Call在java中的实现是怎么样的?Virtual Call在JIT中有没有优化?

https://static001.geekbang.org/infoq/78/788f5205e49fa98694d341bc43d64ad5.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JVM 系列之: 通过一个例子分析 JIT 的汇编代码

用户头像
程序那些事
2020-07-31

我们知道JIT会在JVM运行过程中,对热点代码进行优化,传说自然是传说,今天我们通过一个简单的例子来具体分析一下JIT到底是怎么进行优化的。

https://static001.geekbang.org/infoq/d0/d0caedc4aefc435cdc814dd8a2bbab06.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JVM 详解之: 运行时常量池

用户头像
程序那些事
2020-07-16

JVM在运行的时候会对class文件进行加载,链接和初始化的过程。class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢?快来看一看吧。

https://static001.geekbang.org/infoq/a6/a6b79151ef660c6e82e872f198559703.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JVM 中栈的 frames 详解

用户头像
程序那些事
2020-07-10

我们知道JVM运行时数据区域专门有一个叫做Stack Area的区域,专门用来负责线程的执行调用。那么JVM中的栈到底是怎么工作的呢?快来一起看看吧。

https://static001.geekbang.org/infoq/cf/cfa997f6e7a3a79841b41327f163567e.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JIT 的 Profile 神器 JITWatch

用户头像
程序那些事
2020-07-05

老是使用命令行工具在现代化社会好像已经跟不上节奏了,尤其是在做JIT分析时,使用LogCompilation输出的日志实在是太大了,让人望而生畏。有没有什么更加简便的方法来分析JIT日志呢?快来和小师妹一起来学习JITWatch吧。

https://static001.geekbang.org/infoq/63/63caa746fa00417b9ee52123bdf89450.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

深入理解编译优化之循环展开和粗化锁

用户头像
程序那些事
2020-07-04

之前在讲JIT的时候,有提到在编译过程中的两种优化循环展开和粗化锁,今天我们和小师妹一起从Assembly的角度来验证一下这两种编译优化方法,快来看看吧。

https://static001.geekbang.org/infoq/21/219dae734a644d6a0d54325aa7dca475.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Lambda 初次使用很慢?从 JIT 到类加载再到实现原理

用户头像
Kerwin
2020-07-01

研究Java Lambda 为什么第一次执行会很慢,从JIT即时编译到类加载,再到底层原理,一次求知欲爆棚的体验

https://static001.geekbang.org/infoq/7f/7f741d75d84f7f3767c9c1f24b0c8516.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

小师妹学 JVM 之:JIT 中的 PrintAssembly

用户头像
程序那些事
2020-06-29

想不想了解JVM最最底层的运行机制?想不想从本质上理解java代码的执行过程?想不想对你的代码进行进一步的优化和性能提升?

https://static001.geekbang.org/infoq/61/616da0be1bfa335a589127c2e062509c.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

小师妹学 JVM 之:JIT 中的 PrintCompilation

用户头像
程序那些事
2020-06-24

上篇文章我们讲到了JIT中的LogCompilation,将编译的日志都收集起来,存到日志文件里面,并且详细的解释了LogCompilation日志文件中的内容定义。今天我们再和小师妹一起学习LogCompilation的姊妹篇PrintCompilation,看看都有什么妙用吧。

https://static001.geekbang.org/infoq/c9/c9e90ba4336e83810cc97d0b422a2514.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

小师妹学 JVM 之:JIT 中的 LogCompilation

用户头像
程序那些事
2020-06-19

我们知道在JVM中为了加快编译速度,引入了JIT即时编译的功能。那么JIT什么时候开始编译的,又是怎么编译的,作为一个高傲的程序员,有没有办法去探究JIT编译的秘密呢?答案是有的,今天和小师妹一起带大家来看一看这个编译背后的秘密。

https://static001.geekbang.org/infoq/c9/c9e90ba4336e83810cc97d0b422a2514.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

小师妹学 JVM 之:JDK14 中 JVM 的性能优化

用户头像
程序那些事
2020-06-18

上一篇文章我们讲到了JVM为了提升解释的性能,引入了JIT编译器,今天我们再来从整体的角度,带小师妹看看JDK14中的JVM有哪些优化的方面,并且能够从中间得到那些启发。

https://static001.geekbang.org/infoq/44/447d690875e54e418cb4fbd4a77586d3.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

小师妹学 JVM 之: 深入理解 JIT 和编译优化 - 你看不懂系列

用户头像
程序那些事
2020-06-17

接下来要进入的是JVM中比较晦涩难懂的概念,这些概念是那么的枯燥乏味,甚至还有点惹人讨厌,但是要想深入理解JVM,这些概念是必须的,我将会尽量尝试用简单的例子来解释它们,但一定会有人看不懂,没关系,这个系列本不是给所有人看的。

https://static001.geekbang.org/infoq/c4/c4877ab8dc9be5a4e244f6b69631fab7.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

小师妹学 JVM 之:GC 的垃圾回收算法

用户头像
程序那些事
2020-06-16

JVM的重要性不言而喻了,如果把java的应用程序比作一辆跑车,那么JVM就是这辆车的发动机,没有它,java程序就成了空中楼阁,无根浮萍。而在JVM中有一块内存区域叫做运行时数据区域,存储了运行时所需要的所有对象,而Heap Area则是其中最大的一块。

JIT_JIT技术文章_InfoQ写作社区