一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!( 三 )

如果对象满足这两个条件 , 这些对象就可以判定为Java中的内存泄漏 , 这些对象不会被GC所回收 , 然而它却占用内存 。

什么是线程死锁 , 如何解决 产生死锁的条件有四个:

1.互斥条件:所谓互斥就是进程在某一时间内独占资源 。 2.请求与保持条件:一个进程因请求资源而阻塞时 , 对已获得的资源保持不放 。 3.不剥夺条件:进程已获得资源 , 在末使用完之前 , 不能强行剥夺 。 4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系 。

线程死锁是因为多线程访问共享资源 , 由于访问的顺序不当所造成的 , 通常是一个线程锁定了一个资源A , 而又想去锁定资源B;在另一个线程中 , 锁定了资源B , 而又想去锁定资源A以完成自身的操作 , 两个线程都想得到对方的资源 , 而不愿释放自己的资源 , 造成两个线程都在等待 , 而无法执行的情况 。

要解决死锁 , 可以从死锁的四个条件出发 , 只要破坏了一个必要条件 , 那么我们的死锁就解决了 。 在java中使用多线程的时候一定要考虑是否有死锁的问题哦 。

推荐阅读