面试__八股

java

解释执行,即时编译(编译成本地代码,效率高,内存占用多,C1,C2)
编译优化技术:方法内联,复写传播,无用代码删除
字节码就是虚拟机所使用的指令集
类加载:加载(获取类的二进制流文件,方法区的数据结构,内存生成这个类的class对象),链接(验证,准备(类变量初始化),解析(符号引用替换为直接引用)),初始化(常量初始化)

栈帧主要是局部变量区和操作数栈,方法返回地址,对象头的mark word;关系是通常将局部变量区加载到操作数栈,运算结束后放回局部变量区
对象组成:对象头(运行时的数据,即(mark word,hashcode,锁状态,gc分代年龄 ,重量级锁指向的monitor对象的指针 ) ,类型指针(方法区的类信息)),实例数据,填充数据

虚拟机优化:方法内联,逃逸分析(对象被外部访问(标量替换,将对象的创建替换成为多个成员变量的创建)或其他线程访问(同步省略,锁消除)),本地方法调用,代码优化(循环)
动态绑定和静态绑定:编译期和运行期,动态绑定运行时根据具体对象的类型进行绑定,多态继承等使用,用到了方法表
线程 -> 栈帧的局部变量区 -> 指向堆中对象,对象头部的类型指针->指向方法区的class文件
实现线程主要有3种方式:使用内核线程实现(Windows版与Linux版)、使用用户线程实现和使用用户线程加轻量级进程混合实现。
线程池:《corePoolSize,即使有空闲线程也要创建新的,然后再加入队列中,队列满了才会用到maxPoolSize;再满了用拒绝策略,超过corePoolsize的线程空闲超过keepAliveTime被回收
join基于wait实现,作用是等待子线程执行完再执行主线程,yield是放弃当前cpu时间片

方法区:方法区jdk8之前的实现是永久代,8之后迁移到元空间,替换永久代,字符串常量池容易溢出,永久代大小不好确认,gc回收效率低,元空间使用本地内存,存储类信息,常量,静态变量,即时编译器编译后的代码等
线程池:统一管理,线程数量多少,否则数量多了上下文切换慢,有队列等功能;线程占用资源多,重量级的资源,new代价比较大;有更多功能,并发数,单线程,定期执行等功能
问题:1:Executors默认的无界队列,线程饥饿,队列长度不要过长导致资源耗尽,大量使用线程池导致资源不足,且线程长时间等待,要用new threadPoolExecutor
2:拒绝策略:线程丢失,别人的代码拒绝策略改了没抛出异常,导致线程丢失没日志
线程通信:wait/notify,lock/Condition(CountDownLatch,Semaphore都是通过aqs实现的),共享内存(volatile),synchronized
注解:使用,aop,注解不生效;作用方法,生命周期;注解中方法在使用注解出后面的参数

juc 并发的原子类、集合、锁、tool(countdownlatch和CyclicBarrier)、线程池相关(Future,Executor)
高并发的思路:扩容,拆分,熔断,降级,限流(计数器,漏桶,令牌桶,ratelimit,redis),缓存,队列,数据库(主从,分库分表,拆分)
java内存模型:从主内存到工作内存(线程私有)
线程安全性:原子性(atomic包和锁),可见性(锁,volatile,保证读写前后主内存和工作内存的值是新的),有序性(volatile和锁,happens-before,阐述两个线程间的可见性)
方法:final,线程安全的类,并发容器
juc
同步组件:countdownlatch和CyclicBarrier,信号量,锁;
其他组件,fork/join,blockingqueue,线程池

收集器:serial/serial old 单线程,parNew(serial的多线程版本),parallel scavenge/parallel old(类似parNew,注重吞吐量),CMS
G1相对CMS:可预测时间,非连续的空间,小空间,空间整理,并发完成大部分gc
Full GC,清理整个堆的GC事件,包括新生代、老年代、元空间等(老年代标记整理)
触发场景:1,当老年代无法再分配内存的时候;2、元空间不足的时候 3,空间分配担保
GC优化:解决大对象,增加年轻代空间,更

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值