热腾腾的 Java研发面试字节跳动99题(含答案):JVM+Spring+MySQL+线程池+锁

编程入门 行业动态 更新时间:2024-10-21 07:44:51

热腾腾的 Java研发面试字节跳动99题(含答案):JVM+Spring+MySQL+<a href=https://www.elefans.com/category/jswz/34/1771240.html style=线程池+锁"/>

热腾腾的 Java研发面试字节跳动99题(含答案):JVM+Spring+MySQL+线程池+锁

 

JVM的内存结构

根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。

1. Java虚拟机栈:线程私有;每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数栈,动态连接,方法返回地址等;每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈。

2. 堆:线程共享;被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例。

3. 方法区:线程共享;被所有线程共享的一块内存区域;用于存储已被虚拟机加载的类信息,常量,静态变量等。

4. 程序计数器:线程私有;是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存。

5. 本地方法栈:线程私有;主要为虚拟机使用到的Native方法服务。

为什么要用线程池

那先要明白什么是线程池

线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程。

使用线程池的好处

  1. 线程池改进了一个应用程序的响应时间。由于线程池中的线程已经准备好且等待被分配任务,应用程序可以直接拿来使用而不用新建一个线程。
  2. 线程池节省了CLR 为每个短生存周期任务创建一个完整的线程的开销并可以在任务完成后回收资源。
  3. 线程池根据当前在系统中运行的进程来优化线程时间片。
  4. 线程池允许我们开启多个任务而不用为每个线程设置属性。
  5. 线程池允许我们为正在执行的任务的程序参数传递一个包含状态信息的对象引用。
  6. 线程池可以用来解决处理一个特定请求最大线程数量限制问题。

MySQL优化经验

更多推荐

热腾腾的 Java研发面试字节跳动99题(含答案):JVM+Spring+MySQL+线程池+锁

本文发布于:2024-02-27 14:14:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1706859.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:线程   字节   含答案   MySQL   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!