
/**
* Java 性能优化 3
* 零成本抽象
* 不需要为我们用不到的功能付出成本
* 更进一步,你使用的,也没办法更加优化
*
* AOT(ahead of time)预先编译
* 构建时将源代码编译为平台特定机器代码
*
* 即时编译JIT
* java程序在字节码解释器中执行,再解释器中,指令在虚拟机的栈式机器上执行
* 从CPU抽象出的机制让类文件具有了可移植性
* 为了保持性能,程序必须还要在原始的CPU上执行
* Hotspot通过将程序单元从解释的字节码编译生成原生代码来实现目标
* 虚拟机中的编译单元是方法和循环——所谓的即时编译
*
* 原理
* 当程序在解释模式下运行时,监控该程序并观察代码中执行最频繁的部分
* 这个分析的过程中会捕获程序化轨迹信息,实现更复杂的优化
* 一旦特定方法的执行超过了一个阈值,剖析器会对这段特定的代码进行编译和优化
* 将编译器优化的决策建立在解释阶段收集到的轨迹信息基础上,做出更好的优化
*
* 在java源代码转换成字节码并进行另一个JIT编译器之后
* 实际代码和源代码发生了很大的变换
* 更可预期不一定意味着更好
*
* @JVM内存管理
* 通过GC进程进行处理
*
* @线程和java内存模型
* 每个JVM应用程序线程背后都有唯一的 *** 作系统线程支持
* 他将在被调用start方法的时候被创建出来
*
* 线程的基本设计原则
* java进程中的所有线程共享一个单一,公共的垃圾回收堆
* 某个线程创建的任何对象都可以被任何其他具有该对象引用的线程访问
* 对象在默认情况下是可变的,除非编程为final,否则对象字段中的值可以被修改
*
* java内存模型,解释了不同执行线程如何看到对象中保存的正在修改的值
* 在并发代码执行过程中,java的核心为防止潜在的对象破坏所提供的唯一保护就是互斥锁
*/
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)