首页   注册   登录
 RenJianHeNian 最近的时间轴更新
RenJianHeNian

RenJianHeNian

V2EX 第 403547 号会员,加入于 2019-04-20 21:00:39 +08:00
RenJianHeNian 最近回复了
@mineqiqi base64 没怎么接触过 想当然认成 aes 了(笑哭)
@devilshore 大佬对成都的行情也有了解吗 这个确实有点冲动 不过权衡之下也不是什么值得后悔的事
@sagaxu 大佬北上广的吗
@HuHui 今年成都外包公司连起来可绕地球一圈了!
@a3613051 扎心了,面试也少,面试时问的面面俱到,当时技术上相谈甚欢,然后就没有然后了
@huadi 是不是要求太高了 对标 p 几呢
@ArJun 感觉吧瓶颈太低了 竞争的人真的多
@whp1473 这个大概几分呢。。
@whp1473 举个例子,面试官问定义一个 String 局部变量生命周期是怎么的?我答,程序编译期会确定一个方法需要多少存储空间,执行到变量定义这句话时会为它在堆上分配存储空间。
(插入:怎么分配?)看为当前变量分配所在空间采用的哪种垃圾收集器,如果是 Serial、parNew、Parallel Scavenge 这些采用复制算法的垃圾收集器,就用指针碰撞的方式,如果是 CMS 这种采用标记-清理算法的垃圾收集器就使用空闲列表的方式,没有配置 TLAB 就使用 CAS 尝试分配,配置了直接缓冲空间中分配。

变量定义时,该变量对应在当前栈帧局部变量表中创建一个到堆中分配的空间的引用,生命周期开始,由于编译优化,不会每一个变量都在局部变量表中分配存储引用空间,而是前面的变量如果在后面都没用到了,后面定义的变量就会复用之前变量保存引用的空间。生命周期结束也就是说从 GC Roots 开始去找遍历不到了,GC Roots 有 4 个,静态引用、常量、本地方法栈和虚拟机栈中引用(Hotspot 中本地方法栈和虚拟机栈是合二为一的)。这里已说明是局部变量,也就是说如果后面没在用到,局部变量表中丢失了到堆中的引用,或者方法执行完毕,变量又没有逃逸到方法外面去,局部变量全部回收,GC roots 遍历不可达,生命周期也就结束了。

大致这样,当然可能也有不对不到位的地方、、、
@Kerminate 看了 java 成都 没有合适的 ε=(´ο`*)))唉
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3963 人在线   最高记录 5168   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 09:19 · PVG 17:19 · LAX 01:19 · JFK 04:19
♥ Do have faith in what you're doing.