大家好,我是Joeyzx7000优点(喜欢人还是物,需要知道喜好或优点)封装:封装其事物的具体实现逻辑,只提供业务功能接口.简化第三方使用。继承:在程序中通过继承(extends、implement),使其子类具有父类的特性。多态性:在程序中,通过封装和继承来实现事物的多态模型。比如重载和重写就是多态性的体现。基本数据类型的构成数据类型:byte、short、int、long浮点型:float、double字符型:char布尔型:布尔数组CollectionList、Set、QueueMapHashMap、HashTable、CourrentHashMap、LinkedHashMap、TreeMap类加载器执行过程编译:将其java文件转换成class文件;验证:检查java文件的语法是否正确;准备:在方法区为被其静态属性修改的变量和代码块分配内存空间;解析:将常量池中的符号替换为直接引用的过程;初始化:创建新对象,并创建相应的栈空间;run:bean循环运行空间;加载方法显示加载:class.forName()方法创建;隐式加载:通过new创建对象;Bootstrap)扩展类加载器(Exetensions)应用程序类加载器(Application/System)ParentalDelegationModel由父类加载器执行。如果父类无法加载该类,则交给子类加载器完成加载。如果子类加载器无法加载该类,就会报classNotFoundException。反向委托机制JVM构造了一个结构堆:一块内存共享区,存放对象实例和数组。物理地址不连续,因此性能较慢。内存在程序执行期间被确认。一般来说,内存比栈大很多。方法区:存放静态变量、常量池、字符串池Stack:方法执行线程模型,生命周期与线程相同,主要存放局部变量表、操作数栈、方法出口、动态链接。物理地址连续,满足先进后出原则,性能快。NativeMethodStack:NativeMethodProgramCounter:BytecodeLineNumberIndicator垃圾回收机制原理创建对象时,GC开始监控对象的地址、大小和使用情况回收方式可访问性分析:自动回收机制System.gc():主动回收机制回收算法标记清除:标记无用对象并执行清除操作复制:根据容量分成两个大小相同的区域,当一个块用完时,将存活的对象复制到另一块,然后复制已使用的内存spaceclearedandmarkedatonce:标记无用对象,让所有存活的对象移动到一端,然后直接清除端边界以外的内存。复制:只添加一个指向已有内存地址的指针深复制:同时添加一个指针和一个新内存内存溢出不再使用的对象或变量一直占用内存,长生命周期存在,引用短生命周期,延迟释放.线程创建方法无返回值:Tread、Runnable返回值:Callable面向接口的编程层次清晰,编码复杂;线程编程简单,但不能继承其他父类状态New,ready,running,blocked,dead,waiting同步代码块,方法volatile提供变量内存的可见性(不存储在寄存器中),不提供原子操作。防止指令重排序(程序在实例化一个对象时可以分为三步:分配内存空间,初始化对象,将内存空间的地址赋值给对应的引用,但是由于系统的指令重排序,第三步会与第二步互换)。reentrantLock可重入、互斥、是否公平。锁选择一个原子变量(atomic)。即使命令涉及多个操作,这些操作也是按顺序执行的。轻量级锁:多线程处理时,当lockcas操作时,锁会自旋,减少用户态和核心态的交换,用于占用时间较少的线程。权重锁:多线程处理时,锁会自动自旋到一定程度后,变成重量级锁,阻塞线程。优化自旋操作:准备获取锁的线程不会立即被阻塞,而是会循环尝试获取锁。清锁和锁粗化CountDownLatch一个或多个线程,等待其他线程完成某事后再执行CyclicBarrier多个线程相互等待,直到到达同一个同步点,然后一起继续执行IO类型的文件:filebytes:inputStream/outputStreamcharacter:inputReader/outputWriternetwork:Socketobject:Serializablenewinputandoutput:NIOencodingUTF-8,GBK,UTF-16beformBIO同步阻塞IO,适用于链接数小且固定的框架NIO同步非阻塞IO,selectormultiplexer,核心组件(channel【涵盖TCP、UDP网络IO及其文件IO】、buffer、selector)。适用于链接数量多,连接比较短(轻操作)的架构,AIO异步非阻塞IO以事件驱动的方式进行。适用于链接数量多,连接比较长(运算量大)的架构。
