【面试题】
文章目录
- 0.线上CPU打爆了
- 1.包依赖
- 2.slf4j如何找到 logback 包
- 3. 如何预热一个项目的所有类?
- 4. KafkaAppender
- 5. 设计一个公共的Log模块
- 6. Java所有的对象都是在堆创建吗?
0.线上CPU打爆了
使用arthas
或者 GitHub有个好用的脚本 show-busy-java-threads
1.包依赖
-
一个项目A 依赖了B jar , c jar, b 依赖了 d1 ,c依赖了d2 ,然后d1 d2会冲突,也就是有方法签名不兼容.如何解决?
- classloader ,比如saturn;
- shade掉其中一个jar
2.slf4j如何找到 logback 包
3. 如何预热一个项目的所有类?
4. KafkaAppender
5. 设计一个公共的Log模块
6. Java所有的对象都是在堆创建吗?
不是, Java还可以分配堆外内存.
此外, 还有一种栈上分配对象的虚拟机优化技术, 能大量减少堆上分配的对象.
参考链接
栈上分配内存是要基于逃逸分析和标量替换实现的. 一般其实不需要特别关注,只是写代码可以尽量控制变量的范围, 给予JVM优化空间.