亚洲日韩精品无码一区二区三区
  • 首页
  • 日韩精品无码一本二本三本色
  • 97色色
  • 人妻少妇精品视频一区
  • 亚洲中文字幕久久无码精品
  • 18禁无遮挡羞羞污污污污网站
  • 色综合色狠狠天天综合色
  • 首页
  • 日韩精品无码一本二本三本色
  • 97色色
  • 人妻少妇精品视频一区
  • 亚洲中文字幕久久无码精品
  • 18禁无遮挡羞羞污污污污网站
  • 色综合色狠狠天天综合色

栏目分类

  • 日韩精品无码一本二本三本色
  • 97色色
  • 人妻少妇精品视频一区
  • 亚洲中文字幕久久无码精品
  • 18禁无遮挡羞羞污污污污网站
  • 色综合色狠狠天天综合色

热点资讯

  • 口试篇:假造机栈5连问?一听心里就乐
  • 详解:诬捏化与容器化,你分清了吗?
  • 若何鉴识身边智谋人?
  • 和棋RPG《魔界和忘六》当天领卖:
  • 修养部印收示知部署统筹做孬2022年热期

人妻少妇精品视频一区

口试篇:假造机栈5连问?一听心里就乐了
发布日期:2022-06-18 17:14    点击次数:198

口试篇:假造机栈5连问?一听心里就乐了

口试路上

“滴,滴滴......”师父咱们到哪了?我还要赶着口试呢。

「师父:」 快了快了,下个路口就到了。真的服了这帮人了,不会开车净往里凑。

听着司机师父的报怨声,不禁想开头打油诗:满目尾灯红,耳盈刺笛声。心忧迟到久,颓首似雷轰。

一下车赶快小跑就进了富丽堂皇的旅社,不不不,是商务楼,这大厅有点派头,让我有点非分之想呀。

口试经过

“咚咚咚”,“请进”。

「口试官:」 小伙子长得挺帅呀,年青人即是有活力,来先做个马虎的自我先容吧。

「阿Q:」 口试官你好,My name is “影流之主”,来自艾欧尼亚,是LOL中的最强中单(不给与反驳),论单杀莫得服过谁。我的理论禅是“无形之刃,最为致命”,天然你也可以叫我阿Q,这是我的简历。

「口试官:」 阿Q,那咱也不寒暄了,胜利切正题吧。看你jvm写的常识点最多,那就先说一下你对假造机栈的连合吧。

「阿Q:」 内心OS:这波可以吹X了。咳...咳...假造机栈早期也叫java栈,是在jvm的运转时数据区存在的一块内存区域。它是线程非常的,随线程创建而创建,随线程毕命而为止。

嗯。。。假装想一下??

家喻户晓,栈唯有进栈和出栈两种操作,是以它是一种快速灵验的分派存储模样。关于它来说,它不存在垃圾回收问题,关联词它的大小是动态的粗略固定不变的,因此它会存在栈溢出粗略内存溢出问题......

「口试官:」 打断一下啊,你刚才说会存在栈溢出和内存溢出问题,那你能区分说一下为什么会出现这种情况吗?

「阿Q:」 可以可以, 天天操天天干咱们领路假造机栈由栈帧构成,每一个设施的调用都对应着一个栈帧的入栈。咱们可以通过-Xss参数来开发栈的大小,假定咱们开发的假造机栈大小很小,当咱们调用的设施过多,也即是栈帧过多的话,就会出现StackOverflowError,即栈溢出问题。

假如咱们的栈帧不固定,开发为动态扩张的,那在咱们的内存不实时,也就莫得饱和的内存来复旧栈的扩张,这个时刻就会出现OOM越过,即内存溢出问题。

「口试官:」 嗯嗯(点头状),暗意小伙子思绪很明晰呀,那你刚才说到栈帧开发的太小会导致栈帧溢出问题,那咱们开发的大点不就可以完全幸免栈溢出了嘛。

「阿Q:」 一听即是要给我挖坑呀,像咱们一般都相比贵重中和之道,是以一听到这种齐全的问题,人妻少妇精品视频一区必须贤人点:不不不,调遣栈的大小只能以「降速」栈溢出的时刻粗略说减少栈溢出的风险。

举个例子吧

假如一个业务逻辑的设施调用需要5000次,关联词此时抛出了栈溢出的罪戾。咱们可以通过开发-Xss来得回更大的栈空间,使得调用在7000次时才会溢出。此时调遣栈大小就变得很特地旨,因为这么就会使得业务能日常复旧。

那假如是有「死递归」的情况则无论奈何进步栈大小都会溢出,这么也就莫得任何意旨了。

「口试官:」 好的,那你看一下这个马虎的小尺度,你能大体说一下它在内存中的扩充进程吗?

 public void test() {       byte i = 15;       int j = 8;       int k = i + j; } 

来张图,便于全国更好地连合

「阿Q:」 先把该代码编译一下,然后搜检它的字节码文献。如上图中左边所示,扩充进程如下:

最初将要扩充的请示地址0存放到PC寄存器中,此时,局部变量表和操作数栈的数据为空; 当扩充第一条请示bipush时,将操作数15放入操作数栈中,然后将PC寄存器的值置为下一条请示的扩充地址,即2; 当扩充请示地址为2的操作请示时,将操作数栈中的数据取出来,存到局部变量表的1位置,因为该设施是实例设施,是以0位置存的是this的值,PC寄存器中的值变为3; 同要领2和3将8先放入操作数栈,然后取出来存到局部变量表中,PC寄存器中的值也由3->5->6; 当扩充到地址请示为6、7、8时,将局部变量表中索引位置为1和2的数据再行加载到操作数栈中并进行iadd加操作,将得到的效果值存到操作数栈中,PC寄存器中的值也由6->7->8->9; 扩充操作请示istore_3,将操作数栈中的数据取出存到局部变量表中索引为3的位置,扩充return请示,设施为止。

「口试官:」 内心OS:这小子貌似还可以呀。说的还可以,那你能说一下设施中界说的局部变量是否线程安全吗?

「阿Q:」 那我再用几个例子来说一下吧。

public class LocalParaSafeProblem {       /**      * 线程安全的      * 诚然StringBuilder自身线程不安全,      * 但s1 变量只存在于这个栈帧的局部变量表中,      * 因为栈帧是每个线程寂然的一份,      * 是以这里的s1是线程安全的      */     public static void method01() {         // 线程里面创建的,属于局部变量         StringBuilder s1 = new StringBuilder();         s1.append("a");         s1.append("b");     }      /**      * 线程不安全      * 因为此时StringBuilder是看成参数传入,      * 外部的其他线程也可以看望,是以线程不安全      */     public static void method02(StringBuilder stringBuilder) {         stringBuilder.append("a");         stringBuilder.append("b");     }      /**      * 线程不安全      * 此时StringBuilder被多个线程同期操作      */     public static void method03() {         StringBuilder stringBuilder = new StringBuilder();         new Thread(() -> {             stringBuilder.append("a");             stringBuilder.append("b");         }, "t1").start();          method02(stringBuilder);     }      /**      * 线程不安全      * 因为此时设施将StringBuilder复返出去了      * 外面的其他线程可以胜利修改StringBuilder这个援用了是以不安全      */     public static StringBuilder method04() {         StringBuilder stringBuilder = new StringBuilder();         stringBuilder.append("a");         stringBuilder.append("b");         return stringBuilder;     }       /**      * StringBuilder是线程安全的      * 此时stringBuilder值在刻下栈帧的局部变量表中存在,      * 其他线程无法看望到该援用,      * 设施扩充完成之后此局势部变量表中的stringBuilder的就就义了      * 复返的stringBuilder.toString()线程不安全      * 临了的复返值将toString复返之后,其他线程可以操作而String自身是线程不安全的。      */     public static String method05() {         StringBuilder stringBuilder = new StringBuilder();         stringBuilder.append("a");         stringBuilder.append("b");         return stringBuilder.toString();     } } 

看到这忖度会有点绕,那我就追思一下吧:若是对象是在设施里面产生且在里面毕命,不会复返到外部就不存在线程安全问题;反之若是类自身线程不安全的话就存在线程安全问题。

「口试官:」 可以可以,有理有据,那你再说说你对堆内存的连合吧。

「阿Q:」 唉,今天太累了,说了一天这个了,不想说了。

「口试官:」 那好吧,那咱们今天先到这吧,且归等见告吧。

本文转载自微信公众号「阿Q说代码」,可以通过以下二维码关怀。转载本文请有关阿Q说代码公众号。

 



上一篇:你看到的扫数地址都不是简直
下一篇:讲讲 JVM 的内存科罚『非专科』
    友情链接:
  • 久久被窝亚洲精品爽爽爽
  • 曰批全过程免费视频播放
  • 欧美男男gaygay巨大粗长肥
  • 天天爽天天爽夜夜爽毛片
  • 男女啪激烈高潮喷水动态图

Powered by 亚洲日韩精品无码一区二区三区 @2013-2022 RSS地图 HTML地图