11 2016 档案
redis对比其余数据库
摘要:Redis属于常见的NoSQL数据库或者说非关系数据库:Redis不使用表,她的数据库也不会预定义或者强制去要求用户对Redis存储的不同数据进行关联。 常见数据库对比: 和高性能键值缓存服务器memcached对比: Redis和mencached都可用于存储键值映射,彼此性能也相差无几,但是①. 阅读全文
posted @ 2016-11-29 01:06 kosamino 阅读(3433) 评论(0) 推荐(1) 编辑
ZooKeeper概述(转)
摘要:译自http://zookeeper.apache.org/doc/trunk/zookeeperOver.html ZooKeeper是一个用于分布式应用的开源分布式协调服务。它提供了简单的原语集合,分布式应用可在这些原语之上构建用于同步、配置维护、分组和命名的高层服务。ZooKeeper的设计使 阅读全文
posted @ 2016-11-25 01:48 kosamino 阅读(296) 评论(0) 推荐(0) 编辑
Zookeeper-Zookeeper可以干什么
摘要:在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and 阅读全文
posted @ 2016-11-25 01:22 kosamino 阅读(1446) 评论(0) 推荐(1) 编辑
Java内存分配及变量存储位置实例讲解
摘要:Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对 阅读全文
posted @ 2016-11-23 00:06 kosamino 阅读(14077) 评论(0) 推荐(5) 编辑
内存分配和回收策略
摘要:对象的内存分配,大方向上来说就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),主要对象分配在新生代的Eden区,如果启动了本地分配缓冲,将按照线程优先在TLAB(Thread Local Allocation Buffer)上分配。少数情况下也可能直接分配到老年代中,这些规 阅读全文
posted @ 2016-11-22 23:03 kosamino 阅读(529) 评论(0) 推荐(0) 编辑
理解GC日志
摘要:每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样。但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志: 33.125: [GC [DefNew: 3324K->152K(3712K), 0.0025925 se 阅读全文
posted @ 2016-11-22 22:20 kosamino 阅读(450) 评论(0) 推荐(0) 编辑
CMS为什么采用“标记-清除”算法
摘要:分代式GC里,年老代常用mark-sweep;或者是mark-sweep/mark-compact的混合方式,一般情况下用mark-sweep,统计估算碎片量达到一定程度时用mark-compact。这是因为传统上大家认为年老代的对象可能会长时间存活且存活率高,或者是比较大,这样拷贝起来不划算,还不 阅读全文
posted @ 2016-11-18 00:33 kosamino 阅读(1785) 评论(0) 推荐(0) 编辑
虚拟机中的运行时栈帧
摘要:每个人都知道,各种各样的动画视频,都是由一帧一帧图片连续切换结果的结果而产生的,其实虚拟机的运行和动画也类似,每个在虚拟机中运行的程序也是由许多的帧的切换产生的结果,只是这些帧里面存放的是方法的局部变量,操作数栈,动态链接,方法返回地址和一些额外的附加信息组成,在虚拟机中包含这些信息的帧称为“栈帧” 阅读全文
posted @ 2016-11-18 00:24 kosamino 阅读(2083) 评论(0) 推荐(0) 编辑
6.HotSpot垃圾收集器
摘要:HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器。如果两个收集器之间存在连线,就说明它们可以搭配使用。 并发和并行 先解释下什么是垃圾收集器的上下文语境中的并行和并发: 并行(Parallel):指多条垃圾收集器线程并行工作,但此时用户线程仍然处于等待 阅读全文
posted @ 2016-11-16 23:31 kosamino 阅读(1992) 评论(0) 推荐(2) 编辑
5.HotSpot的算法实现
摘要:1.枚举根节点 在可达性分析中,可以作为GC Roots的节点有很多,但是现在很多应用仅仅方法区就有上百MB,如果逐个检查的话,效率就会变得不可接受。 而且,可达性分析必须在一个一致性的快照中进行-即整个分析期间,系统就像冻结了一样。否则如果一边分析,系统一边动态表化,得到的结果就没有准确性。这就导 阅读全文
posted @ 2016-11-16 22:26 kosamino 阅读(1005) 评论(0) 推荐(0) 编辑
4.垃圾收集算法
摘要:1.标记-清除算法 对所有存活对象进行一次全局遍历来确定哪些对象可以回收,遍历的过程从根出发,找到所有可达对象,除此之外,其它不可达的对象就是垃圾对象,可被回收。整个过程分为两个阶段:标记阶段找到所有存活对象;清除阶段清除所有垃圾对象。 优点:采用的可达性分析算法,相比较引用计数算法,标记-清除算法 阅读全文
posted @ 2016-11-16 21:59 kosamino 阅读(381) 评论(0) 推荐(0) 编辑
3.对象死亡标记
摘要:1.概述 Java内存运行时区域的各个部分里: 其中程序计数器、虚拟机栈、本地方法栈3各区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每个栈帧中分配多少内存基本上是在类结构定下来是就已知了,因此这几个区域的内存分配和回收都具备确定性,不需过多考虑。 而堆 阅读全文
posted @ 2016-11-15 23:28 kosamino 阅读(472) 评论(0) 推荐(0) 编辑
2.Java对象创建
摘要:1. 对象的创建 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程,在类的加载检查通过后,接下来java虚拟机会为新生对象会在堆中划分出一定的内存。对象所需内 阅读全文
posted @ 2016-11-15 21:33 kosamino 阅读(304) 评论(0) 推荐(1) 编辑
1.Java内存区域
摘要:Java虚拟机在执行java程序的过程中会把他管理的内存划分为若干个不同的数据区域各自用途、创建以及销毁时间各不相同。有的随着虚拟机进行的启动而存在,有的区域依赖于线程的启动和结束而建立以及销毁。如图: 1.程序计数器 Jvm将这个计数看作当前线程(意味着只能支持单线程)执行某条字节码的行号指示器, 阅读全文
posted @ 2016-11-02 01:42 kosamino 阅读(514) 评论(0) 推荐(0) 编辑