点击上方 "程序员小乐"关注, 星标或置顶一起成长
每天凌晨00点00分, 第一时间与你相约
每日英文
Everyone's got a life that no one else knows about.
每个人都有自己的人生,冷暖自知。
每日掏心话
若要自由,就得牺牲安全。若要闲散,就不能获得别人评价中的成就。若要愉悦,就无须计较身边的人给予的态度。
来自:LittleMagic | 责编:乐乐
链接:jianshu.com/p/8377e09971b8
程序员小乐(ID:study_tech)第 787 次推文 图片来自Pexels
往日回顾:流行的Spring Boot + Vue架构整合开发的网易云+QQ音乐(附源码)!
正文
static StringBuilder getStringBuilder1(String a, String b) { StringBuilder builder = new StringBuilder(a); builder.append(b); return builder; // builder通过方法返回值逃逸到外部}static String getStringBuilder2(String a, String b) { StringBuilder builder = new StringBuilder(a); builder.append(b); return builder.toString(); // builder范围维持在方法内部,未逃逸}
public class EscapeAnalysisTest { public static void main(String[] args) throws Exception { long start = System.currentTimeMillis(); for (int i = 0; i < 5000000; i++) { allocate(); } System.out.println((System.currentTimeMillis() - start) + " ms"); Thread.sleep(600000); } static void allocate() { MyObject myObject = new MyObject(2019, 2019.0); } static class MyObject { int a; double b; MyObject(int a, double b) { this.a = a; this.b = b; } }}
~ java -XX:-DoEscapeAnalysis EscapeAnalysisTest76 ms~ jmap -histo 26031 num #instances #bytes class name---------------------------------------------- 1: 5000000 120000000 me.lmagics.EscapeAnalysisTest$MyObject 2: 636 12026792 [I 3: 3097 1524856 [B 4: 5088 759960 [C 5: 3067 73608 java.lang.String 6: 623 71016 java.lang.Class 7: 727 43248 [Ljava.lang.Object; 8: 532 17024 java.io.File 9: 225 14400 java.net.URL 10: 334 13360 java.lang.ref.Finalizer# ......
开启逃逸分析
~ java -XX:+DoEscapeAnalysis EscapeAnalysisTest4 ms~ jmap -histo 26655 num #instances #bytes class name---------------------------------------------- 1: 592 11273384 [I 2: 90871 2180904 me.lmagics.EscapeAnalysisTest$MyObject 3: 3097 1524856 [B 4: 5088 759952 [C 5: 3067 73608 java.lang.String 6: 623 71016 java.lang.Class 7: 727 43248 [Ljava.lang.Object; 8: 532 17024 java.io.File 9: 225 14400 java.net.URL 10: 334 13360 java.lang.ref.Finalizer# ......
static void allocate() { int a = 2019; double b = 2019.0;}
private void someMethod() { Object lockObject = new Object(); synchronized (lockObject) { System.out.println(lockObject.hashCode()); }}
private void someMethod() { Object lockObject = new Object(); System.out.println(lockObject.hashCode());}
欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。
欢迎各位读者加入订阅号程序员小乐技术群,在后台回复“加群”或者“学习”即可。
猜你还想看
阿里、腾讯、百度、华为、京东最新面试题汇集
Java 多态的实现机制,看了都说好!
中央政治局会议:疫情防控工作取得阶段性成效,但拐点尚未到来
在Spring Boot项目中整合使用Activiti
文章有问题?点此查看未经处理的缓存