jvm
大房子爱生活
这个作者很懒,什么都没留下…
展开
-
java内存模型详解以及Java堆的分代
jvm是java的核心和基础,在java编译器和os平台之间的虚拟处理器,JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,使用JVM就是为了支持与操作系统无关,实现跨平台。1.jvm的内存模型包括以下几部分:方法区:是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据Java堆:堆用来存储几乎所有对象、数组等都在此分配内存,在jvm...原创 2019-03-22 00:13:44 · 629 阅读 · 0 评论 -
关于Java虚拟机中的垃圾回收---面试题
1.Java中垃圾回收的目的:垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源2.什么时候进行垃圾回收:垃圾回收是在内存中存在没有引用的对象或超过作用域的对象时进行的3.system.gc() 和 runtime.gc() 会做什么事情:这两个方法用来提示jvm要进行垃圾回收,但是,立即开始还是延迟进行垃圾回收是取决于jvm的4.finalize() 方法什么...原创 2019-03-28 11:03:51 · 1128 阅读 · 0 评论 -
ArrayList 和 LinkedList 的区别
ArrayList 和 LinkedList 都实现了List接口,区别主要有以下几点ArrayList底层使用的是数组,优点数组查询具有索引查询速度比较快,插入删除修改比较慢(因为数组在内存中是一块连续的内容,如果插入或删除是需要移动内存,所以比较慢)使用场景是使用在查询比较多,插入和删除比较少的情况LinkedList底层使用的是链表,链表不需要内存是连续的,在当前元素中存放下一个或上一...原创 2019-03-28 10:28:09 · 177 阅读 · 0 评论 -
Thread 类中的:sleep(),join(),wait(),yield()区别详解
1. sleep():Thread.sleep(1000);在指定时间内让当前执行的线程暂停执行一段时间,让其他线程有机会继续执行,但不会释放对象锁,也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据,不推荐使用,sleep() 使当前线程进入阻塞状态,在指定时间不会执行。2. wait():对象的方法,会释放对象锁wait()和notify()、notif...原创 2019-03-27 17:34:12 · 3072 阅读 · 0 评论 -
关于HashMap的数据存储结构,以及冲突问题的解决原理
首先我们都知道hashmap是用的数组+链表的数据结构来存储数据的,存入的数据也是通过键值对key/value这样的方式,下面整理的是比较底层的一些源码分析:1. 首先我们要知道什么是 hash 函数:hash函数就是将一个任意长度的二进制值,通过映射关系也就是hashmap底层用到的一个hash算法,转化成固定长度的二进制值,得到一个hash值2. HashMap的实现原理:hashma...原创 2019-03-16 14:54:57 · 1342 阅读 · 0 评论 -
Java中的 Iterator 迭代器
迭代器是一种设计模式,它是一个对象,可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构1. Iterator 接口中定义的几个常用方法:next():获取序列中的下一个元素hasNext():检查序列中是否还有元素remove():将迭代器返新返回的元素删除2. 使用 Iterator 迭代器遍历集合中的元素:public static void main(Strin...原创 2019-03-27 15:44:56 · 210 阅读 · 0 评论 -
Java中产生死锁的原因以及死锁的解除
1. 产生死锁的主要原因:因为系统资源不足进程运行推进的顺序不合适资源分配不当等如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁,其次进程运行推进顺序与速度的不同也可能产生死锁2. 产生死锁的四个必要条件:互斥条件:一个资源每次只能被一个进程使用请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放不剥夺条...原创 2019-03-27 14:30:45 · 379 阅读 · 0 评论 -
线程中同步方法和同步代码块的区别
1. 为什么要使用同步:java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。2.同步方法:即有synchronized关键字修饰的方法由于 Java的每个对象都会有一个内置锁,当用此关键字修饰方法时,内置锁会...原创 2019-03-27 14:11:20 · 1395 阅读 · 1 评论 -
线程的几种状态
线程从创建,运行到结束需要经历下面五个状态:新建状态,就绪状态,运行状态,阻塞状态以及死亡状态,可参照下图理解1.新建状态(new):当线程对象创建后,即进入了新建状态,此时程序还没有运行线程中的代码,如:Tread t = new MyThread()2.就绪状态(Runnable):一个新创建的线程并不会自动开始运行,要执行线程,必须调用线程的 Start() 方法,当调用线程...原创 2019-03-27 13:44:30 · 183 阅读 · 0 评论 -
创建线程的4种方式以及实现的代码
创建一个线程有四种方式:继承Thread类创建线程实现Runnable接口创建线程使用Callable和Future创建线程使用线程池例如用Executor框架1.继承Thread类创建线程:创建线程的步骤:定义Thread类的子类,并重写该类的 run() 方法,该方法的方法体就是县城需要完成的任务,run() 方法也成为线程的执行体创建Thread子类的实例,也就是创建了...原创 2019-03-27 11:38:06 · 1473 阅读 · 0 评论 -
进程和线程的区别与联系
1.进程:进程是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位2.线程:线程是进程的一个执行单元,是进程内科调度实体,比进程更小的独立运行的基本单位,线程也被称为轻量级进程一个程序至少一个进程,一个进程至少一个线程3.进程与线程的练习:每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用...原创 2019-03-27 11:02:14 · 237 阅读 · 0 评论 -
关于值传递和引用传递
1.值传递:在值传递过程中,形式参数类型是基本数据类型,当用方法调用时,实际参数将它的实际值传递给形式参数,此传递过程就是将实参的值复制一份传递给形参,而形参只是用实参的参数值初始化自己的存储单元内容,是两个不同的存储单元,这样如果在函数中对形参的值进行了操作将不会影响实参的值,因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下2.引用传递:在引用传递中,形式参数类型是引...原创 2019-03-26 23:33:29 · 400 阅读 · 0 评论 -
Java跨平台原理详解
Java通过不同系统,不同版本,不同位数的Java虚拟机(jvm)来屏蔽不同的系统指令集差异,而对外提供统一的接口(Java API)来实现Java程序的跨平台运行1. Java源文件的编译过程:Java编译程序将Java源程序翻译为jvm虚拟机可执行的代码,也就是字节码2. Java解释器的执行过程:运行jvm的工作是由解释器来完成的,解释器执行过程分为3步:代码的装入,代码的校验,代码...原创 2019-03-23 23:37:44 · 194 阅读 · 0 评论 -
关于JDK,JVM和JRE的区别
1.Java运行时环境(JRE):它包括Java虚拟机,Java核心类库和支持文件,JRE是Java运行环境,既然是运行,当然要包含jvm,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户2.Java开发工具包(JDK):是完整的Java软件开发包,包含了jre,编译器和其他的工具:JavaDoc,Java调试器,可以让开发者开发,编译...原创 2019-03-26 20:52:56 · 680 阅读 · 0 评论 -
jvm虚拟机中常用的几种垃圾回收算法
Java语言是不需要程序员手动管理内存的,jvm虚拟机自动管理内存,进行垃圾回收,这里说几种常用的垃圾回收算法以1. 复制算法:此算法把内存空间分为两个相等的区域,每次只使用其中一个区域,垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一块区域当中,此算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不会出现碎片问题,缺点是需要两倍的内存空间...原创 2019-03-22 00:29:15 · 415 阅读 · 0 评论 -
Java中的异常
1.Java中的两种异常类型以及区别:Throwable是所有异常的根,Error是错误,Exception是异常1.1 Exception:一般分为Checked异常(受检查异常)和Runtime异常(运行时异常),所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedExceptionChecked异常:对Ch...原创 2019-03-28 21:43:17 · 250 阅读 · 0 评论