中国建设交易信息网站,河南建设资格执业网站,找方案的网站,东莞网站建设制作JVM中的存储
JVM的五块存储区#xff1a; 方法区#xff08;线程共享#xff09; 方法区用来存储类的各种信息#xff08;类名、方法信息等#xff09;、静态变量、常量和编译后的代码也存储在方法区中 方法区中也存在运行时常量池 常量池中会存放程序运行时生成的各种…JVM中的存储
JVM的五块存储区 方法区线程共享 方法区用来存储类的各种信息类名、方法信息等、静态变量、常量和编译后的代码也存储在方法区中 方法区中也存在运行时常量池 常量池中会存放程序运行时生成的各种字面量和引用信息 虚拟机栈 虚拟机栈由一个个的栈帧组成、每一个栈帧对应一个被调用的方法存储局部变量、操作数、方法的返回地址等。 本地方法栈 用于管理本地方法的调用Native标识、负责与非Java语言的交互 堆线程共享 堆中存储的是程序中创建出的对象实例类的成员变量垃圾回收机制也是主要作用于堆 程序计数器 存放要执行的指令地址
字符串在JVM中的存储
创建一个字符串时回先检查字符串常量池中是否存储有对应的字符串如果有就把这个字符串拿到并赋值给对象如果没有那就创建一个对象并把这个字符串加到常量池中。
SpringMVC的工作流程 用户通过浏览器发送一个Http请求这个请求会被DispatcherServlet拦截 DispatcherServlet调用HandlerMapping找到具体的Handler和拦截器。 将获取到的具体的Handler信息发送给HandlerAdapter HandlerAdopter根据Handler信息找到并执行对应的请求Controller并进行处理 Handler执行完毕之后返回给HandlerAdopter一个ModelAndView对象 HandlerAdopter接收到ModelAndView对象之后会将该对象返回给DispatcherServlet DispatcherServlet在接收到ModelAndView对象之后会使用视图解析器对视图进行解析 视图解析完成之后会将View返回给DispatcherServlet DIspatcherServlet在接收到视图之后会进行视图渲染并将数据注入到View中对应的域中生成最终的View并将结果返回给浏览器。
面试需要知道的Linux指令
查看日志tail -f filename
ls
mkdir
cd
zip / unzip (.zip文件)
gzip / gunzip (.gz文件)
tar -c (压缩文件) / tar -x (解压文件) (.tar文件)
cp
rm (删除空目录) rm -f(递归删除目录)数据库索引
数据库索引是一种特殊的文件、包含着对数据库表中所有记录的引用指针
索引可以有效的提高搜索效率
没有Where的情况、使用IS NULL的情况、比较不匹配的数据类型等等时、数据库索引会失效
Java垃圾回收机制
GC是Java垃圾回收机制的关键原理垃圾回收是JVM中的重要功能
垃圾回收分为两个阶段 垃圾标记阶段 垃圾只有先被标记出来了才可以被处理、在标记阶段有两种算法 引用计数算法 对于每一个创建出来的对象都维护一个标记整数每多一次引用就将标记1、引用结束就将标记-1直至标记为0时就将这个对象标记为垃圾。 优点实现简单逻辑清楚 缺点每个对象都要维护一个标记浪费空间且无法处理循环引用Java没有这样做 可达性分析算法JVM GC会定义GC Roots节点、GC Roots节点可以是虚拟机栈中引用的对象局部变量、方法区中的静态变量、常量、本地方法栈中引用的对象、被同步锁Synchronized持有的对象、JVM的内部引用等。GC会从这个GC roots集合中进行搜索查看被这些变量引用的对象以及查找到的这些对象引用的对象这些被查找到的对象就被视为非垃圾、其他的就被视为垃圾。 在JVM中、没有GC Roots的引用会对对象进行第一次标记、对finilize()方法进行检测与调用是第二次标记两次标记都生效后就彻底被归为需要回收的垃圾 垃圾清理阶段 标记-清除算法 标记清除算法会在堆空间耗尽时进行全盘扫描记录标记为垃圾的内容的地址并维护一张垃圾清单下次有新内容进入时会直接覆盖清单上的地址。 缺点需要维护一个空闲地址清单。 在进行回收时需要停止整个程序。回收出来的地址空间不连续容易造成内存碎片。 复制算法 将内存空间分为两块正常时使用一块在进行垃圾回收时将还存活的内容复制到另一块并清除原先的所有内容。 注意复制算法不标记需要清除的内容只对非垃圾进行复制。 缺点需要两倍的内存空间、在回收时若发生存活内容较多的情况时需要复制很多内容。 标记-压缩算法 其将所有标记为存活的对象紧凑到内存地址的一端解决了标记-清除算法产生内存碎片的问题但仍然会造成STW停止。 分代收集算法JVM 利用JVM的分代模型JVM将堆内容分为新生代和老生代新生代的内容大多存活时间较短、老生代的内容存活时间较长 对于两个区域实行不一样的垃圾清理算法对于新生代使用复制算法 对于老生代使用标记-清除或者标记-复制算法 同时还有 增量收集算法垃圾回收与线程交替进行并发来避免STW会增加线程切换的开销 分代算法将整个堆空间再进行划分控制STW的时间
CMS收集器一致维护到JDK14、在JDK15中将CMS移除
CMS可以实现垃圾收集的并发处理
1. 初始标记通过GC Roots搜索所有直接关联的子节点很短时间的STW
2. 并发标记进行可达性分析找出不可达的对象与正常线程并行执行无STW。
3. 重新标记重新标记在并发标记时发生变化的对象STW
4. 并发清理对垃圾进行并行的清理即清理不影响其他线程CMS基本实现了无STW情况的垃圾回收但CMS也有以下缺点
占用CPU资源线程的收集无法处理浮动垃圾在并发清理的阶段仍然有新的垃圾生成需要预留出足够的内存产生大量内存碎片标记-清除算法
封装关键词
public当前类、同包、子类、其他包
protected当前类、同包、子类
缺省当前类、同包
private当前类
short s1 1; s1 s1 1; //会报错因为会short自动转换成int存在小转大、有损失
short s1 1; s1 1; //不会报错会自动进行转换操作将1转换为short截断