热文JVM启动参数大全及默认值

其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足...

热文垃圾收集器

如果说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,

热文垃圾收集算法

由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程。

热文判断对象是否已死

堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象有哪些还“存活”着,哪些已经“死去”(即不可能再被任何途径使用的对象)...

热文对象的内存布局

HotSpot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持 有的锁、偏向线程ID、...

热文Java代码说明JVM内存布局

通常情况下,我们在研究JVM内存布局的时候,主要研究的就是Java虚拟机栈和堆(Heap)。这也是大多人将Java虚拟机内存粗分为栈内存和堆内存的原因。

热文Java虚拟机运行时数据区

经常有人把Java内存区分为堆内存(Heap)和栈内存(Stack),这种区分方法比较粗糙,Java内存区域的划分实际上远比这复杂。Java虚拟机在执行Java程序的过程...

热文死锁案例分享

在实际开发中,死锁的案例可遇不可求。有些人可能开发了5年甚至10年,也没有在生产环境下遇到过死锁案例。如果真的遇到了死锁问题,你应该庆幸,先不要担心能不能解决,毫无疑问的...

热文异步Future的实现

`Future`是用来执行任务的结果,JDK自带的Future实现`FutureTask`,只能同步等待结果,当get方法被调用的时候,当前线程就会被阻塞,一直到任务执行...

热文FutureTask源码分析

在之前的章节中,我们提到可以通过`ExecutorService`中定义的submit相关方法向线程池中提交一个任务(`Callable`、`Runnable`),并且获...

热文实现自己的Executor

前面我们已经提到,JDK自带的executors的实现都是基于线程池和任务队列的。不过,接口规范并没有对executors的实现细节有着严格限制。本小节从代码的角度说明为...

热文java并发包--线程池

在之前的所有案例中,我们总是通过启动一个新的线程来执行新的任务。对于一些小的应用来说,这是OK的,但是对于一些大型的应用来说,这是不太合适的。

热文CyclicBarrier

`CyclicBarrier`字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarri...

热文Semaphore

Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释...

热文CountDownLatch

CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行...

热文Condition接口

Condition的作用是替代Object的监视器方法监视器方法(wait、notify 和 notifyAll),其主要是与Lock配合使用。

热文Lock接口与ReentrantLock

锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。

热文Unsafe类介绍

很多低级语言中可用的技巧在Java中都是不被允许的。Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的。