大家好,我是二哥呀。
The Information 有这样一则消息,我觉得有必要同步给大家:
除非美国最高法院介入阻止禁令,否则 TikTok 计划在星期天,关闭其针对美国用户的应用程序。
TikTok 没有选择允许已下载 App 的用户继续使用,而是选择硬刚,所有打开 TikTok 的用户将会看到一个弹出消息,指引他们前往一个介绍禁令信息的网站。
不知道有没有 TikTok 的小伙伴可以确认一下。
我们且等一个 deadline,看看最后怎么说。
于此同时,这给小红书却带来了泼天的富贵。
太平洋那边的海量用户,跨越山海,选择用小红书 App 来作为他们自由发声的替代品。
恩,不知道你们打开小红书的首页是什么样子,反正我打开小红书首页的时候已经变成这个样子了。
这个样子我只能打九分啊,少的一分是希望小红书戒骄戒躁,稳稳接住这波流量。
据在小红书的朋友透露,这次他们新增了很多技术岗的 HC,我争取明天把具体的 JD 同步给大家,需要的小伙伴届时可以冲一波。
说起来惭愧,没注册成功过 TikTok,去看看太平洋那边的世界(🤣);但我很早就注册了小红书啊,以后有的是时间去补课。
希望太平洋那边的用户,不要吝啬啊。
希望太平洋那边的用户,不要再 Hi China 了,要好好学习中文啊,补齐自己的知识短板,这样才能入乡随俗啊。
希望我们国内的运营者矜持一点,人家都还没学好中文呢,你可倒好,直接上去输出英文了。
截图来自卡兹克
话说,我的小红书账号是不是也要开始运营起来了,面渣逆袭的八股整起来?
技术派、PmHub 的实战项目整起来?
兄弟姐妹们,这波文化输出,我应不应该积极参与一下?在线等,急。
三分恶面渣逆袭
我这人一向说到做到,每天给大家汇报一下面渣逆袭的进度,这就来。如果大家觉得应该的话,我马上行动,没有大家的督促,我觉得自己欠缺点斗志,害害害。
好,接下来,一道八股,咱们日拱一卒。
点击屏幕左下方的【
关注
】按钮,带走她,这份在 GitHub 上星标 13000+ 的面渣逆袭 PDF(包含 Java、Spring、MySQL、Redis、操作系统、计算机网络等),并且暗黑、亮白和 epub版本都有。
16.对象一定分配在堆中吗?
不一定。
默认情况下,Java 对象是在堆中分配的,但 JVM 会进行逃逸分析,来判断对象的生命周期是否只在方法内部,如果是的话,这个对象可以在栈上分配。
举例来说,下面的代码中,对象
new Person()
的生命周期只在
testStackAllocation
方法内部,因此 JVM 会将这个对象分配在栈上。
public void testStackAllocation() {
Person p = new Person(); // 对象可能分配在栈上
p.name = "沉默王二是只狗";
p.age = 18;
System.out.println(p.name);
}
什么是逃逸分析?
逃逸分析是一种 JVM 优化技术,用来分析对象的作用域和生命周期,判断对象是否逃逸出方法或线程。
可以通过分析对象的引用流向,判断对象是否被方法返回、赋值到全局变量、传递到其他线程等,来确定对象是否逃逸。
如果对象没有逃逸,就可以进行栈上分配、同步消除、标量替换等优化,以提高程序的性能。
可以通过
java -XX:+PrintFlagsFinal -version | grep DoEscapeAnalysis
来确认 JVM 是否开启了逃逸分析。
二哥的 Java 进阶之路:JVM 开启了逃逸分析
逃逸具体是指什么?
根据对象逃逸的范围,可以分为方法逃逸和线程逃逸。
当对象被方法外部的代码引用,生命周期超出了方法的范围,那么对象就必须分配在堆中,由垃圾收集器管理。
public Person createPerson() {
return new Person(); // 对象逃逸出方法
}
比如说
new Person()
创建的对象被返回,那么这个对象就逃逸出当前方法了。
三分恶面渣逆袭:方法逃逸
再比如说,对象被另外一个线程引用,生命周期超出了当前线程,那么对象就必须分配在堆中,并且线程之间需要同步。
public void threadEscapeExample() {
Person p = new Person(); // 对象逃逸到另一个线程
new Thread(() -> {
System.out.println(p);
}).start();
}
对象
new Person()
被另外一个线程引用了,发生了线程逃逸。
逃逸分析会带来什么好处?
主要有三个。
第一,如果确定一个对象不会逃逸,那么就可以考虑栈上分配,对象占用的内存随着栈帧出栈后销毁,这样一来,垃圾收集的压力就降低很多。