41.在Java中,对象什么时候可以被垃圾回收?
当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了 。42.JVM的永久代中会发生垃圾回收么?
垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full GC) 。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的 。这就是为什么正确的永久代大小对避免Full GC是非常重要的原因 。请参考下Java8:从永久代到元数据区(注:Java8中已经移除了永久代,新加了一个叫做元数据区的native内存区)
43.Java中的两种异常类型是什么?他们有什么区别?
Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常 。不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面 。相反,受检查的异常必须要用throws语句在方法或者是构造函数上声明 。这里有Java异常处理的一些小建议 。44、对Spring的理解,项目中都用什么?怎么用的?对IOC、和AOP的理解及实现原理
spring是一个开源框架,处于MVC模式中的控制层,它能应对需求快速的变化,其主要原因它有一种面向切面编程(AOP)的优势,其次它提升了系统性能,因为通过 依赖倒置机制(IOC),系统中用到的对象不是在系统加载时就全部实例化,而是在调用到这个类时才会实例化该类的对象,从而提升了系统性能 。这两个优秀的性能 使得Spring受到许多J2EE公司的青睐,如阿里里中使用最多的也是Spring相关技术 。45、线程同步,并发操作怎么控制
Spring的优点:1、降低了组件之间的耦合性,实现了软件各层之间的解耦 。2、可以使用容易提供的众多服务,如事务管理,消息服务,日志记录等 。3、容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能 。Spring中AOP技术是设计模式中的动态代理模式 。只需实现jdk提供的动态代理接口InvocationHandler,所有被代理对象的方法都由InvocationHandler接管实际的处理任务 。面向切面编程中还要理解切入点、切面、通知、织入等概念 。Spring中IOC则利用了Java强大的反射机制来实现 。所谓依赖注入即组件之间的依赖关系由容器在运行期决定 。其中依赖注入的方法有两种,通过构造函数注入,通过set方法进行注入 。
Java中可在方法名前加关键字syschronized来处理当有多个线程同时访问共享资源时候的问题46、JVM垃圾回收算法?
资源时,如果该资源没有被占用,那么将资源交付给这个申请者使用,在此期间,其他申请者只能申请而不能使用该资源,当该资源被使用完成后将释放该资源上的锁,其他申请者可申请使用 。并发控制主要是为了多线程操作时带来的资源读写问题 。如果不加以空间可能会出现死锁,读脏数据、不可重复读、丢失更新等异常 。并发操作可以通过加锁的方式进行控制,锁又可分为乐观锁和悲观锁 。悲观锁:悲观锁并发模式假定系统中存在足够多的数据修改操作,以致于任何确定的读操作都可能会受到由个别的用户所制造的数据修改的影响 。也就是说悲观锁假定冲突总会发生,通过独占正在被读取的数据来避免冲突 。但是独占数据会导致其他进程无法修改该数据,进而产生阻塞,读数据和写数据会相互阻塞 。乐观锁:乐观锁假定系统的数据修改只会产生非常少的冲突,也就是说任何进程都不大可能修改别的进程正在访问的数据 。乐观并发模式下,读数据和写数据之间不会发生冲突,只有写数据与写数据之间会发生冲突 。即读数据不会产生阻塞,只有写数据才会产生阻塞 。
基本回收算法
1. 引用计数(Reference Counting) 比较古老的回收算法 。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数 。垃圾回收时,只用收集计数为0的对象 。此算法最致命的是无法处理循环引用的问题 。
2. 标记-清除(Mark-Sweep) 此算法执行分两阶段 。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除 。此算法需要暂停整个应用,同时,会产生内存碎片 。
3. 复制(Copying) 此算法把内存空间划为两个相等的区域,每次只使用其中一个区域 。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个区域中 。次算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不过出现“碎片”问题 。当然,此算法的缺点也是很明显的,就是需要两倍内存空间 。
推荐阅读
- 微信小程序页面传值、组件间通信总结
- 一线大厂JAVA面试精选:JVM+RabbitMQ+Mybatis+Redis+分布式+微服务
- Redis高性能缓存数据库面试题
- CentOS7怎么安装图形界面
- 蚊子闻到风油精会怎样 蚊香滴点风油精在上面有副作用吗
- 阿里内部的那个牛逼带闪电的Java诊断工具终于开源了
- 青藏高原的面积约为250万 世界上最高的青藏高原被称为
- 荔枝泡酒后荔枝肉要拿出来吗 荔枝泡酒要把里面的籽去掉吗
- 学者讲解茶文化,蕴含历史 文学方面的知识
- 适合油皮的十大洗面奶推荐
