
学习笔记
文章平均质量分 77
nickfover
这个作者很懒,什么都没留下…
展开
-
1.前言
在《学习笔记》这一模块,主要系统学习优秀编程书籍,让前面学到的知识有一个全面框架性的总结: 1、《java虚拟机及高级特性》2-16章 2、《hadoop技术内幕》17- 2、《java核心》 3、《java程序员修炼之道》 ...原创 2014-10-06 19:12:30 · 123 阅读 · 0 评论 -
16、线程安全与锁优化
线程安全与锁优化 http://sunlogin.oray.com/setup?key=5a6b845c2b753490e073262eb555e768http://jingyan.baidu.com/article/b2c186c893aa3bc46ff6ff7d.html 葵码:1195-9377-0602-5375-1027 什么是葵码? http://su...原创 2014-10-26 13:23:00 · 97 阅读 · 0 评论 -
15、内存屏障与高效并发
1、硬件知识缓存:断电丢失数据 缓存包括:cpu缓存、内存、显存、磁盘缓存、硬盘缓存;cpu缓存又分一级缓存和二级缓存。 一般讲的高速缓存就是cpu缓存; i5 cpu速度 3.2GHz= 3.2G/S 2000 ddr3 = 2G/S 硬盘 SATA2接口 300M/S USB3.0 80M/S 高...原创 2014-10-26 13:22:43 · 134 阅读 · 0 评论 -
14、jvm字节码执行引擎
JVM主要包含三大核心部分:运行时数据区,类加载器和执行引擎。 虚拟机是相对物理机概念: 物理机的执行引擎 建立在cpu、硬件、指令集、和操作系统 上的指令集 虚拟机的执行引擎 可以自行编制指令集和引擎结构,并且能够执行物理机不支持的指令集。 javac编译器完成了程序代码经过词法分析、语法分析到抽象语法树、再遍历语法树生成线性的字节码指令流的过程。而字节码文件再经过加载、验证、...原创 2014-10-22 16:02:43 · 144 阅读 · 0 评论 -
13、jvm类加载器
JVM主要包含三大核心部分:运行时数据区,类加载器和执行引擎。 jvm把字节码文件加载到内存,通过验证、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。 类加载过程: 1、加载loading 通过一个类的全名(包.类路径)来获取此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在java堆中生成一个代表这个类的java.lang.C...原创 2014-10-21 00:10:32 · 96 阅读 · 0 评论 -
12、类初始化与对象实例化
在上章中讲解了类文件的生成和包含的信息,但是要加载到jvm中才能启动和运行; #、一直以为 初始化和实例化 是一个意思,今天就来甑辩一下他们是否相同? 参看:http://www.ibm.com/developerworks/cn/java/j-lo-clobj-init/ http://blog.youkuaiyun.com/moreevan/article/detai...原创 2014-10-19 13:10:11 · 156 阅读 · 0 评论 -
11、字节码文件解析
实现语言与操作系统的无关性基础仍然是虚拟机和字节码储存格式,jvm不与java及其他任何语言绑定,只和.class文件这种特定的二进制格式绑定, class文件包含jvm的指令集和符号表等其他信息;使用javac可以将java语言编译成.class文件,使用JRuby编译器可以讲JRuby编译成.class文件,jvm并不关心.class的来源是何种语言。 ...原创 2014-10-17 16:44:06 · 140 阅读 · 0 评论 -
10、$调优案例分析与实战
空空空空空空空空空空空空空空空空空空空空空空空空空原创 2014-10-17 15:27:57 · 82 阅读 · 0 评论 -
9、虚拟机性能监控与故障处理工具
在java/bin目录中除了java.exe和javac.exe之外,还有很多exe文件, 这些执行文件大多数是java\lib\tools.jar类库的一层薄包装而已,它们主要的功能代码是在tools类库中实现的。 Sun JDK 监控和故障处理工具 (1)jps:JVM process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 ...原创 2014-10-17 11:43:19 · 178 阅读 · 0 评论 -
8、内存管理机制---内存分配与回收策略
对象的内存分配,一般就是在堆上分配空间,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB(缓存)上分配。也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置。 1、对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够...原创 2014-10-17 11:32:08 · 115 阅读 · 0 评论 -
7、内存管理机制---垃圾收集器(下)
垃圾收集器是垃圾收集算法的具体实现。Java规范对垃圾收集器的实现没有做任何规定,因此不同的虚拟机提供的垃圾收集器可能有很大差异。HotSpot虚拟机1.7版本使用了多种收集器。(HotSpot使用G1的垃圾收集器) 共有7种作用不不同分代的收集器,其中Serial、ParNew、Parallel Scavenge(并行清除)属于新生代收集器,CMS...原创 2014-10-14 17:02:37 · 113 阅读 · 0 评论 -
6、内存管理机制---垃圾收集器(上)
1960年 MIT(麻省理工学院 Massachusetts Institute of Technology )Lisp语言 第一次使用动态内存分配和垃圾收集技术; 那些内存需要被释放 在什么时候释放 怎样实现释放 程序计数器、jvm栈、本地方法栈随 线程创建和释放(不由GC回收),栈中的栈帧随方法的进入...原创 2014-10-14 10:41:48 · 138 阅读 · 0 评论 -
5、内存管理机制---内存溢出(配置参数)
除了计数器外,其他的内存空间都可能发生OutOfMemoryError(OOM)错误 1、java堆内存溢出 java堆是用来储存实例、方法区、句柄,只要不断创建对象,在gc没及时清除这些对象时,就会达到最大堆的容量限制产生 内存溢出异常。 查看jvm分配到的内存: System.out.println(Runtime.getRuntime().maxMemory()/10...原创 2014-10-11 00:29:12 · 132 阅读 · 0 评论 -
4、内存管理机制---运行时数据区
第二部分、内存管理机制 1、运行时数据区 2、内存溢出异常 3、垃圾收集器 4、内存分配策略 5、内存调优分析 Java的内存管理就是对象的分配和释放问题。 分配 :内存的分配是由程序完成的,程序员需要通过关键字new (或者反射newinstance)为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。 释...原创 2014-10-09 22:05:25 · 135 阅读 · 0 评论 -
3、编写自己的jdk
由于没有在windows下编写jdk成功,在以后在linux上试下,这章暂时作废。 书中主要介绍了几种在linux/macos/solaris,在附录部分介绍了windows下编写自己的jdk,我自己使用的是windows 86,所以这里讲解将用windows的版本来学习,如果以后用到linux再增加linux版的学习; 1、下载openjdk源码:http://open...原创 2014-10-09 19:41:17 · 358 阅读 · 0 评论 -
2、《深入理解java虚拟机》
目录: 1、走近java 2、自动内存管理机制 3、虚拟机执行子系统 4、程序编译与代码优化 5、高效并发 1.1、概述 java不仅仅是一门编程语言,它还是个技术规范:提供完整的软件开发和跨平台部署,广泛用于嵌入式、移动、j2ee、大型机等各种场合;java语言的主要优点:摆脱硬件束缚;提供相对安全的内存管理和访问机制,避免大部分内存泄露和指针越界问题;常用代码索引使得程...原创 2014-10-06 19:22:46 · 145 阅读 · 0 评论 -
17、《hadoop技术内幕》
hadoop csdn中文社区:http://hadoop.youkuaiyun.com/ 教材:《Hadoop技术内幕-深入解析MapReduce架构设计与实现原理》 董西成 机械工业出版社 2013.5 参看bolg:http://blog.youkuaiyun.com/chaofanwei/article/details/39553621 ...原创 2014-10-28 23:14:26 · 153 阅读 · 0 评论