Singleton模式可以是很简单的,它的全部只需要一个类就可以完成(看看这章可怜的UML图)。但是如果在“对象创建的次数以及何时被创建”这两点上较真起来,Singleton模式可以相当的复杂,比头五种模式加起来还复杂,譬如涉及到DCL双锁检测(double checked locking)的讨论、涉及到多个类加载器(ClassLoader)协同时、涉及到跨JVM(集群、远程EJB等)时、涉及到单例对象被销毁后重建等。对于复杂的情况,本章中会涉及到其中一些[1]...
分类:
其他好文 时间:
2014-08-23 17:47:51
阅读次数:
327
?内存引用(释放强引用)Object obj=new Object();obj = null;?内存引用(使用软引用) 软引用是主要用于内存敏感的高速缓存。在jvm报告内存不足之前会清 除所有的软引用,这样以来gc就有可能收集软可及的对象,可能解决内存 吃紧问题,避免内存溢出。什么时候会被收集...
分类:
其他好文 时间:
2014-08-22 19:24:09
阅读次数:
245
无论是在Java或者Android中执行命令行语句殊途同归都是创建一个子进程执行调用可执行文件执行命令,类似于Windows中的CMD一样。
此时你有两种方式执行:ProcessBuilder与Runtime;两种创建方式各有千秋,至于区别详见:[Java][Android][Process] ProcessBuilder与Runtime区别
在Android中创建子进程执行命令的时候有着一定的限制:
1.JVM提供的内存有限。
2.底层缓冲区间大小有限。
3.在高并发情况下容易造成阻塞。
基于上几点在执行...
分类:
移动开发 时间:
2014-08-22 17:52:09
阅读次数:
320
很多童鞋可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的。 今天特写此文,来整理下三者的关系。
1 JDK
JDK : Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/ja...
分类:
其他好文 时间:
2014-08-22 17:51:39
阅读次数:
203
Like the local variables, the operand stack is organized as an array of words. But unlike the local variables, which are accessed via array indices, the operand stack is accessed by pushing and poppin...
分类:
其他好文 时间:
2014-08-22 16:22:07
阅读次数:
268
java中的.java文件经过编译以后,就会生成类文件.class文件。class文件是以二进制字节码存放在硬盘中的。当我们需要使用或加载Java文件到JVM中的时候,会从硬盘中读取字节码的class文件,然后通过类加载器将class文件加载到JVM中。也就是说,所有的Java文件都是通过类加载器加载到JVM中的。当然类加载器也是一个Java文件。那么第一个类加载器又是如何加载到JVM中的呢?在启...
分类:
编程语言 时间:
2014-08-22 14:35:04
阅读次数:
263
对于CAS是一种有别于synchronized的一种乐观锁实现.是一种非阻塞锁算法.CAS通过与原始预期值进行比较来确定是否修改主内存中数据的一种方案.基于一个线程的失败或者挂起不应该影响其他线程的失败或挂起这样的前提,而提出硬件层次的实现数据处理的互斥。可以自动更新共享数据,而且能够检测到其他线程的干扰,而
compareAndSet() 就用这些代替了锁定。对于实现CAS的原子类(Atom...
分类:
编程语言 时间:
2014-08-22 10:56:46
阅读次数:
261
相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括...
分类:
编程语言 时间:
2014-08-22 10:46:25
阅读次数:
173
Scala是一门混合了函数式和面向对象的语言。Scala运行在JVM上,在Scala中你可以直接使用Java API,并且你还可以享受到Scala所带来的便捷,尤其是在多线程应用中。你应该首先安装JDK,然后下载Scala,开发工具推荐intelli J,你用eclipse也可以。首先看第一个Sca...
分类:
其他好文 时间:
2014-08-22 00:15:45
阅读次数:
329
1.JVM运行时数据区域的划分 a.程序计数器(Program Counter Register) 一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。每个线程拥有独立的一个计数器,如果当前执行的是Native方法,则计数...
分类:
编程语言 时间:
2014-08-21 22:58:45
阅读次数:
483