加载(创建class对象) -> 连接(验证-准备-解析) -> 类初始化
根类加载器:加载java核心类
扩展类加载器:加载JRE目录中的jar包
系统类加载器:加载用户自定义类和classpath下的jar包
通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义
方便运行时动态构建代理、动态处理代理方法调用的机制
静态代理:事先写好代理类,缺点是每个业务类都要对应一个代理类,不灵活
动态代理:运行时自动生成代理对象,缺点是生产代理对象和调用代理方法需要额外时间
InputStream,FileInputStream,BufferedInputStream
OutputStream,FileOutputStream,BufferedOutputStream
DataInputStream,DataOutputStream
ByteArrayInputStream,ByteArrayOutputStream
ObjectInputstream,ObjectOutputStream
PrintStream,SequenceInputStream
Reader,InputStreamReader,FileReader,BufferedReader
Writer,OutputStreamWriter,FileWriter,BufferedWriter
CharArrayReader,CharArrayWriter,PrintWriter
StringReader,StringWriter,RandomAccessFile,Properties
问题 | 答案 |
---|---|
TCP客户端socket是什么? | Socket |
TCP服务端socket是什么? | ServerSocket |
UDP所用socket是什么? | DatagramSocket |
UDP所发和收数据报的packet是什么? | DatagramPacket |
GC主要对象是堆和方法区,堆中把短命对象归为新生代,长命对象归为老年代
1、当应用程序空闲时,即没有应用线程在运行时,GC会被调用
2、Java堆内存不足时,GC会被调用。当应用线程在运行,并在运行过程中创建新对象,若这时内存空间不足,JVM就会强制地调用GC线程,以便回 收内存用于新的分配。