秦皇岛建设管理中心网站,wordpress标签化关键词,服务行业网站建设,晋江企业网站开发挑战第 4 天 Excption与Error包结构OOM 知识点SOF 知识点线程程序进程知识点有些字段不想序列化#xff0c;怎么办#xff1f;说说 IO 流Java IO与 NIO的区别 Excption与Error包结构
运行时异常#xff08;RuntimeException#xff09;#xff1a;
包括RuntimeException… 挑战第 4 天 Excption与Error包结构OOM 知识点SOF 知识点线程程序进程知识点有些字段不想序列化怎么办说说 IO 流Java IO与 NIO的区别 Excption与Error包结构
运行时异常RuntimeException
包括RuntimeException及其子类。编译器不强制处理可以不捕获也不抛出。常见类型包括ArithmeticException、IndexOutOfBoundsException、NullPointerException等。
被检查异常CheckedException
是Exception的子类但不包括RuntimeException。编译器强制处理必须捕获或声明抛出。常见类型包括IOException、FileNotFoundException、SQLException等。
错误Error
包括Error类及其子类。编译器不检查通常由JVM抛出表示严重错误。常见类型包括VirtualMachineError、OutOfMemoryError等。
OOM 知识点
Java Heap 溢出
异常信息java.lang.OutOfMemoryError: Java heap space。原因不断创建对象且避免垃圾回收直到堆内存耗尽。诊断使用内存分析工具如Eclipse Memory Analyzer分析堆转储快照区分内存泄漏还是内存溢出。解决方案检查并优化内存使用调整JVM参数如-Xmx和-Xms。
虚拟机栈和本地方法栈溢出
异常StackOverflowError请求的栈深度超过最大深度或OutOfMemoryError扩展栈时内存不足。注意栈大小增加会减少可分配线程数。
运行时常量池溢出
异常信息java.lang.OutOfMemoryError: PermGen space。原因常量池内容过多如通过String.intern()添加字符串。解决方案限制方法区大小通过-XX:PermSize和-XX:MaxPermSize。
方法区溢出
异常信息java.lang.OutOfMemoryError: PermGen space。原因类信息占用内存过多或类对象未及时回收。注意在动态生成大量Class的应用中需特别注意。
SOF 知识点
定义
StackOverflowError是在应用程序递归调用太深导致堆栈空间耗尽时抛出的错误。
常见原因
深度递归调用递归调用层次过深超出栈的容量限制。大量循环或死循环在循环中不断压栈可能导致栈空间耗尽。全局变量过多虽然不直接导致栈溢出但可能间接增加栈的使用。数据结构过大如数组、List、Map等数据结构过大可能导致栈溢出。
处理建议
优化递归算法减少递归深度或改用迭代方法。检查并修复可能导致无限循环的逻辑错误。减少不必要的全局变量使用。优化数据结构的大小避免过大的数据结构导致栈溢出。
线程程序进程知识点
程序
定义含有指令和数据的文件存储在磁盘或其他存储设备中。特性静态的代码未被执行。
进程
定义程序的一次执行过程是系统运行程序的基本单位。特性动态的包括创建、运行到消亡的过程。资源占有CPU时间、内存空间、文件、输入输出设备的使用权等。
线程
定义进程划分的更小的运行单位。特性比进程更小的执行单位共享进程的内存空间和系统资源。区别线程之间可能相互影响而进程之间基本上是独立的。
关系
程序是静态的代码进程是程序的动态执行实例。一个进程可以包含多个线程线程是进程中的一个实体。线程是轻量级的创建和切换的开销小于进程。进程提供了操作系统级别的并发执行而线程提供了同一程序内的并发执行。
有些字段不想序列化怎么办
使用transient关键字
作用阻止被修饰的变量被序列化。
transient关键字的限制
只能修饰变量不能修饰类或方法。
序列化和反序列化的影响
序列化时被transient修饰的变量不会被持久化。反序列化时被transient修饰的变量值不会被恢复通常会保持默认值。
说说 IO 流
按流向分
输入流用于读取数据。输出流用于写入数据。
按操作单元分
字节流以字节为单位进行数据操作。字符流以字符为单位进行数据操作。
按角色分
节点流低级流直接从数据源或目的地读写数据如FileInputStream、FileOutputStream。处理流高级流基于其他流提供额外的功能如缓冲、转换等如BufferedReader、BufferedWriter。
基类
InputStream所有字节输入流的基类。OutputStream所有字节输出流的基类。Reader所有字符输入流的基类。Writer所有字符输出流的基类。
Java IO与 NIO的区别
引入时间
NIO是在JDK 1.4中引入的。
作用与目的
NIO与IO具有相同的作用和目的即进行输入输出操作。
实现方式
NIO与IO的实现方式不同NIO主要使用块block操作。
效率
由于使用块操作NIO的效率通常高于IO。
API分类
Java API中提供了两套NIO 一套针对标准输入输出的NIO。另一套用于网络编程的NIO。