JVM
hellodake
这个作者很懒,什么都没留下…
展开
-
[核心技术36问]1-12
1.谈谈你对Java平台的理解?“Java是解释执行”,这句话正确吗?典型回答:Java本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(write once,run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC,garbage collection),Java通过垃圾收集器(garbage collector)回收分配内...原创 2018-07-05 11:00:03 · 447 阅读 · 0 评论 -
JAVA线程sleep()和wait()区别
sleep是Thread类的静态方法,所以它不能改变对象的锁;wait是Object的方法; sleep是会让线程暂停工作一段时间,休眠一段时间,让出CPU的使用,但是不会释放对象锁,由于不释放对象锁,所以不能调用里面的同步方法,而wait方法会释放当前线程的锁,当一个线程执行到wait方法时,他就会失去了对象的锁,可以访问里面的同步方法; wait使用notify或者notifyAll或者指...原创 2018-08-22 08:34:35 · 154 阅读 · 0 评论 -
8.16 线程池;HTTP;数据库索引
1.讲一下TCP连接,三次握手四次挥手。https://blog.csdn.net/hellodake/article/details/81080415网路的七层协议是什么?物理层,数据链路层,网络层,运输层,会话层,表示层,应用层 UDP、TCP、IP分别属于哪一层。UDP/TCP属于运输层;IP属于网络层。2.HTTP协议,cookie和session。3.讲一下线程池。h...转载 2018-08-17 11:22:29 · 121 阅读 · 0 评论 -
虚拟机类加载机制和new对象的过程
虚拟机类加载机制: 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载,验证,准备,解析,初始化,使用和卸载7个阶段。其中验证、准备、解析三个阶段成为连接。加载、验证、准备、初始化和卸载这几个阶段的顺序是固定的,解析阶段则不一定,它在某些情况下可以在初始化阶段之后再开始,这是为了支持java语言的运行时绑定(也称为动态绑定或晚期绑定)。new对象的过程:...原创 2018-08-15 21:29:13 · 769 阅读 · 0 评论 -
8.15 5个题
1.垃圾回收算法 垃圾回收算法:标记-清除;复制算法;标记-整理;分代收集标记-清除:标记所有需要回收的对象,在标记完成后统一清除需要回收的对象。效率低且容易产生碎片空间。 复制算法:将可用内存分为大小相等的两块,每次只使用其中的一块,一块用完以后将还存活的对象复制到另一块上面,然后一次性清除已使用过的空间。不过现在都是分为一块Eden,两块Survivior,Eden:...原创 2018-08-15 14:34:52 · 193 阅读 · 0 评论 -
[核心技术36问]21.Java并发类库提供的线程池有哪几种?分别有什么特点?
21.Java并发类库提供的线程池有哪几种?分别有什么特点? 通常开发者都是利用Executors提供的通用线程池创建方法,去创建不同配置的线程池,主要区别在于ExecutorService类型或者不同的初始参数。 Executors目前提供了五种不同的线程池创建配置:newCachedThreadPool(),它是一种用来处理大量短时间工作任务的线程池,具有几个鲜明特点:...原创 2018-07-30 17:24:20 · 474 阅读 · 0 评论 -
[核心技术36问]20.并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?
20.并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别? 有时候我们把并发包下面的所有容器都习惯叫做并发容器,但是严格来讲,类似ConcurrentLinkedQueue这种Concurrent*容器,才是真正代表并发。Concurrent类型基于lock-free,在常见的多线程访问场景,一般可以提供较高吞吐量; 而Linke...原创 2018-07-26 16:34:56 · 1256 阅读 · 0 评论 -
[核心技术36问]19.Java并发包提供了哪些并发工具类?
Java并发包提供了哪些并发工具类? 我们常说的并发工具包就是java.util.concurrent及其子包,集中了Java并发的各种基础工具类,其中主要包括以下几个方面:提供了比synchronized更加高级的各种同步结构,包括CountDownLatch、CyclicBarrier、Semaphore等,可以实现更加丰富的多线程操作,比如利用semaphore作为资源控制器,...原创 2018-07-21 10:29:39 · 735 阅读 · 0 评论 -
[核心技术36问]18.什么情况下java程序会产生死锁?如何定位、修复?
18.什么情况下java程序会产生死锁?如何定位、修复? 死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅是在线程之间会发生,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞的状态。 定位死锁最常用的工具就是利用j...原创 2018-07-19 14:45:21 · 2538 阅读 · 0 评论 -
[核心技术36问]17.一个线程两次调用start()方法会出现什么情况?谈谈线程的生命周期和状态转移。
17.一个线程两次调用start()方法会出现什么情况?谈谈线程的生命周期和状态转移。 Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常,多次调用start()被认为是编程错误。 关于线程生命周期的不同状态,在Java 5以后,线程状态被明确定义在java.lang.Thread.Sta...原创 2018-07-19 10:44:48 · 683 阅读 · 0 评论 -
[核心技术36问]13-24
13.谈谈接口和抽象类有什么区别? 接口和抽象类都是java面向对象设计的两个基础机制。 接口是对行为的抽象,它是抽象方法的集合,利用接口可以实现API定义和实现分离的目的。接口,不能实例化,不能包含任何非常量成员,即所有的field默认隐含都是public static final的;接口中不能包含任何非静态方法的实现,即接口中的方法要么是抽象方法,要么是静态方法。java标...原创 2018-07-18 21:54:12 · 357 阅读 · 0 评论 -
JVM内存模型以及栈溢出、堆溢出
JVM内存模型线程共享:堆、方法区线程私有:虚拟机栈、本地方法栈、程序计数器堆:存放所有对象实例;方法区:存储已被虚拟机加载的类信息,常量、静态变量,即时编译后的代码等;虚拟机栈:java方法执行的内存模型:每个方法在执行的过程中都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过...原创 2018-08-27 13:43:10 · 906 阅读 · 0 评论