面试
yangshuxing1989
这个作者很懒,什么都没留下…
展开
-
GC ROOT
1、计数法 循环引用 finalize 只执行一次,逃逸 2、可达性 1、虚拟机栈(栈帧中的就把变量去,局部变量表)中引用的对象 2、方法去中的类静态属性引用对象 3、方法区中常量引用对象 4、本地方法栈中JNI(native方法)引用的对象 ...原创 2021-01-03 19:40:58 · 109 阅读 · 0 评论 -
ClassLoader
1、java类加载器有那几个 bootstrap、ext、app、user(自定义) 2、classLoader.getParent()如果是bootstrap,返回null 3、双亲委派机制 每次加载类的时候都优先从父加载器中查找是否已经加载过 双亲委派,沙箱安全。比如自己自定义String 编译不会出错但是运行出错。 4、类加载器是隔离的 不同类在不同类加载器加载创建的对象是不同的。 ...原创 2021-01-03 13:01:03 · 111 阅读 · 0 评论 -
ThreadPoolExecutor使用
1、开发中需要自定义线程池, 定义线程池,标识名称好定位问题 默认的Executors 中的线程池 linkedblockedqueue是无界阻塞队列 cachedTHreadPool是无界的线程数 都会导致OOM 2、线程池有7个参数 核心线程数、最大线程数、队列、线程工程方法、拒绝策略、包活时间和单位。 3、拒绝策略有四种 直接丢弃不抛异常discard 丢弃抛异常abort 丢弃最老的discardoldest ,丢弃最老的执行当前的 调度者策略,callrunner 到达最大值之后线程调度者再次执原创 2021-01-03 12:41:37 · 162 阅读 · 0 评论 -
synchronized与Lock区别
1、一个是系统关键字、一个是类 monitorentry monitorexit 2、加锁是否公平 sync是非公平、Lock中的reentryLock 非公平与公平 3、等待中断 sync正常退出和异常退出 Lock可中断 4、锁绑定多个条件Condition reentrantLock是实现分组唤醒需要唤醒的线程、而不是sync那样要么唤醒(随机)一个要么全部权限 ...原创 2021-01-02 21:23:04 · 115 阅读 · 0 评论