Java内存学习-JIT(Just In Time) 即时编译器 3- 相关优化2

优化技术

Loop unrolling循环展开

LoopUnrollLimit必须在C2下才能使用

JVM技能篇:循环展开
https://juejin.cn/post/6876765748593688590

代码执行流水之循环展开优化
https://blog.csdn.net/qq_20880415/article/details/106080960

JVM JIT - Loop Unrolling
https://fasihkhatib.com/2018/05/20/JVM-JIT-Loop-Unrolling/

Loop Unrolling
https://blogs.oracle.com/javamagazine/post/loop-unrolling

JVM系列之:深入学习方法内联
https://juejin.cn/post/7078671997143629832

https://heapdump.cn/topic/LoopUnrollLimit

https://fasihkhatib.com/2018/05/20/JVM-JIT-Loop-Unrolling/

https://www.geeksforgeeks.org/time-taken-loop-unrolling-vs-normal-loop/

样例代码

public class LoopUnrolling1 {
	public static void main(String[] args) {
		 
	      long stime1 = System.currentTimeMillis();
	       // 执行时间(1s)
	       int calc1 = calc1(1000000000);
	       // 结束时间
	       long etime1 = System.currentTimeMillis();
	        // 计算执行时间
	       System.out.printf("执行时长:%d 毫秒.", (etime1 - stime1));
	       
	       
		      stime1 = System.currentTimeMillis();
		       // 执行时间(1s)
		       calc1 = calc2(1000000000);
		       // 结束时间
		       etime1 = System.currentTimeMillis();
		        // 计算执行时间
		       System.out.printf("执行时长:%d 毫秒.", (etime1 - stime1));
		 
		       
	    }
	public static int calc1(int n){
	    int fact0=1, fact1=1;
	    for (int i=0; i<n; i+=2){
	        fact0*=i;
	        fact1*=i+1;
	    }
	    return fact0*fact1;
	}
	public static int calc2(int n){
	    int fact0=1, fact1=1, fact2=1, fact3=1, fact4=1;
	    for (int i=0; i<n; i+=5){
	        fact0*=i;
	        fact1*=i+1;
	        fact2*=i+2;
	        fact3*=i+3;
	        fact4*=i+4;	        
	    }
	    return fact0*fact1*fact2*fact3*fact4;
	}	
}

SafePoint安全点

-XX:+SafepointTimeout
-XX:SafepointTimeoutDelay=
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCDetails
-XX:+PrintSafepointStatistics
-XX:PrintSafepointStatisticsCount=1
-XX:+SafepointTimeout
-XX:SafepointTimeoutDelay=

JVM safe point 安全点和 counted loop 可数循环
https://blog.csdn.net/weixin_43735348/article/details/127580774

耗时几个月,终于找到了JVM停顿十几秒的原因
https://juejin.cn/post/7068858769706319879

JVM相关 - SafePoint 与 Stop The World 全解
https://zhuanlan.zhihu.com/p/161710652

HBase实战:记一次Safepoint导致长时间STW的踩坑之旅
https://juejin.cn/post/6844903878765314061#comment

分支预测Branch Prediction

一文告诉你CPU分支预测对性能影响有多大
https://zhuanlan.zhihu.com/p/150707004

深入理解CPU的分支预测(Branch Prediction)模型
https://zhuanlan.zhihu.com/p/22469702

Cloud-Native云原生

云原生关注的几个指标:应用启动时间,驻留内存大小,应用文件大小

Graal AOT

Oracle GraalVM Enterprise Edition 22
https://docs.oracle.com/en/graalvm/enterprise/22/docs/overview/architecture
本地预编译
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

jitserver

外部容器或资源的jit编译架构

JITServer - Optimize your Java cloud-native applications https://developer.ibm.com/articles/jitserver-optimize-your-java-cloud-native-applications/

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值