JVM
小跳蛙啦啦啦
这个作者很懒,什么都没留下…
展开
-
Java垃圾回收算法
垃圾回收 判断对象是否是垃圾 引用计数法 在对象中添加一个引用计数器,如果被引用计数器加1,引用失效计数器减1,如果计数器为0则被标记为垃圾。 原理简单,效率高。但是在Java中很少使用,因为存在对象间循环引用的问题,导致计数器无法清零。 可达性分析 主流语言的内存管理都使用可达性分析判断对象是否存活。基本思路是通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程走过的路径称为引用链,如果某个对象到GC Roots没有任何引用链相连,则会标记为垃圾。 可作原创 2020-10-15 22:31:22 · 204 阅读 · 0 评论 -
JVM类加载机制过程详解
JVM类加载机制 Java程序运行过程 首先通过Javac编译器将==.java转为JVM可加载的.class==字节码文件。 javac是由Java编写的程序,编译过程可分为 词法分析。通过空格分割出单词、操作符、控制符等信息,形成token信息流,传递给语法解析器。 语法解析。把token信息流按照Java语法规则组装成语法树。 语义分析。检查关键字使用是否合理、类型是否匹配、作用域是否相等。 字节码生成。将前面各个步骤的信息转换成字节码。 字节码必须通过类加载过程加载到JVM才可以执行,执行有原创 2020-10-15 22:25:23 · 216 阅读 · 0 评论 -
IO流--BIO/NIO/AIO
IO流 java.io 主要分为字符流和字节流,字符流一般用于文本文件,字节流一般用于图像或其他文件。 字符流包括了字符输入流Reader和字符输出流Writer; 字节流包括了字节输入流InputStream和字节输出流OutputStream。 字符流和字节流都有对应的缓冲流,字节流也可以包装为字符流,缓冲流有一个8kb的缓冲数组,可以提高流的读写效率。除了缓冲流外还有过滤流FilterReader、字符数组流CharArrayReader、字节数组流ByteArrayInputStream、文件流Fi转载 2020-10-15 22:20:08 · 226 阅读 · 0 评论 -
Java内存区域与内存溢出异常《深入理解Java虚拟机》
Java内存区域与内存溢出异常 1、运行时数据区域 1.1、程序计数器 是一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能需要依赖这个计数器来完成。 它是线程私有的。 如果线程正在执行的是一个Java方法,则这个计数器记录的是正在执行的虚拟机的字节码指令的地址。 如果线程正在执行的是一个本地方法,则计数器值为空。 它是唯一一个没有规定任何OutOfMemoryError情况的区域。 1.2、Jav原创 2020-09-29 09:42:30 · 79 阅读 · 0 评论