自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

转载 JVM之内存中的对象模型

这里说HotSpot虚拟机中的对象转自这里:原文连接对象的创建一个简单的创建对象语句Clazz instance = new Clazz();包含的主要过程包括了类加载检查、对象分配内存、并发处理、内存空间初始化、对象设置、执行ini方法等。主要流程如下:java对象创建流程---1.加载---2.连接 | ---2.1验证 | --- 文件格式验证 --- 元数据

2016-09-22 01:01:07 342

原创 JVM之锁的优化

自旋锁Spinning锁消除锁粗化轻量级锁偏向锁对象内存布局JDK 1.5 到 JDK 1.6的一个重要改进,便是高效并发。此时实现了各种锁优化技术,为了高效地在线程之间共享数据,解决竞争问题,从而提高执行效率。适应性自旋锁(Adaptive Spinning)锁消除(Lock Elimination)锁粗化(Locking Coarsening)轻量级锁(Lightweight

2016-09-22 00:57:20 581

原创 JVM之线程安全、原子性实现

定义线程安全2 状态依赖线程的安全度1 不可变Immutable2 绝对线程安全3 相对线程安全4 线程兼容5 线程对立实现线程安全的方法1 同步11 阻塞同步互斥同步12 非阻塞同步Java原子操作的实现13 无同步方案1.定义线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协

2016-09-22 00:50:59 1610

原创 JVM之线程实现

线程1 实现线程的方式11 使用内核线程实现12 使用用户线程实现13 用户线程加轻量级进程混合实现2 Java的线程实现并发不一定要依赖多线程,PHP中有多进程并发。但是,Java里面的并发是多线程的。1. 线程参考:Java多线程之基本概念线程是比进程更轻量级的调度执行单位。线程可以把一个进程的资源分配和执行调度分开。一个进程里可以启动多条线程,各个线程可共享该进程的资源(内存地址,文

2016-09-22 00:46:13 1770

原创 Spark MLlib之矩阵

Spark MLlib的底层组件BLAS/LAPACK层LAPACK是用Fortran编写的算法库,顾名思义,Linear Algebra Package是为了解决通用的线性代数问题。算法包BLAS(Basic Linear Algebra Subprograms),其实LAPACK底层使用了BLAS库Netlib-java对BLAS/LAPACK封装的Java接口层Breezescala编

2016-09-19 13:24:34 4304

原创 JVM之内存构成(二)--JAVA内存模型与并发

物理机中的并发硬件效率与一致性Java线程执行的内存模型工作内存主内存内存间交互long和double的非源自性协定Volatile类型变量的特殊规则和语义保证可见性禁止指令重排优化高效并发的原则可见性有序性和原子性先行发生Happens-Before这部分内容,跟并发有关我们知道,多任务处理,在现代操作系统几乎是必备功能。让计算机同时去做几件事情,不仅因为CPU运算能力太强大

2016-09-19 13:05:29 2678 1

原创 JVM之再谈类加载

类的生命周期加载Loading连接Linking验证Verification准备Preparation解析Resolution初始化Initialization类加载器类加载器类加载机制 总体上说,虚拟机把描述类的数据,从字节码文件加载到内存,然后进行数据校验、转换解析、初始化,最终形成可以被寻积极使用的Java类型,这就是虚拟机的类加载机制。与C/C++在编译时,需要连接不

2016-09-19 12:48:36 291

原创 JVM之执行引擎

运行时栈帧结构方法调用动态语言支持字节码解释执行引擎虚拟机是如何执行方法里面的字节码指令的基于栈的指令集和基于寄存器的指令集编译优化技术Javac编译过程分为哪些步骤即时编译器JIT热点代码优化技术类型代表性优化技术公共子表达式消除数组边界检查消除方法内联逃逸分析Java与CC编译器Execution Engine是虚拟机的核心组成之一虚拟机和物理机的区别是什么?这两

2016-09-19 12:16:15 5022 2

原创 JVM之类文件结构

Class类文件的结构魔数Magic Number与Class文件的版本Version常量池Constant Pool访问标志Access Flags类索引父类索引与接口索引集合This ClassSuper Class Interfaces字段表集合Fields方法表集合Methods属性表集合Attributes字节码指令加载和存储指令运算指令对象创建与访问指令操作数栈管

2016-09-17 11:42:51 324

原创 JVM之内存分配与回收策略

对象优先在 Eden 分配大对象直接进入老年代长期存活对象进入老年代动态对象年龄判定空间分配担保Java技术体系提倡的自动内存管理,最终,可以归结为自动化解决两个问题给对象分配内存回收分配给对象的内存给对象分配内存,大方向上,是在堆上分配,但也可能经过JIT编译后,被拆散为标量类型,并间接地栈上分配对象主要分配在新生代的Eden区域,如果启动了本地线程分配缓冲,将按线程,优先在Thr

2016-09-11 10:22:52 548 1

原创 JVM之GC收集器

垃圾收集器Serial收集器Serial Old收集器ParNew收集器Parallel Scanvenge收集器Parallel Old收集器CMSConcurrent Mark SweepG1收集器GC收集器的选择吞吐量优先的并行收集器响应时间优先的并发收集器垃圾收集器串行收集器 Serial开头的 SerialSerial Old(MSC)并行收集器 Paralle

2016-09-11 10:02:22 2107

原创 JVM之GC算法和种类

垃圾收集算法可达性分析算法强引用StringReference软引用SoftReference弱引用WeakReference虚引用PhantomReference引用计数算法Reference Counting标记-清除算法Mark-Sweep复制算法Copying标记-整理Mark-Compact分代收集算法Generational CollectionHotSpot的算法实

2016-09-11 10:00:21 2816

原创 JVM之对象引用

强引用StringReference创建对象,并把对象赋给一个引用变量,程序通过这个引用变量来操作对象,对象和数组都采用了强引用。一个对象被一个或以上引用变量引用,则处于可达状态,不会被GC软引用SoftReference要用java.lang.ref.SoftReference实现内存空间足够时,不会被GC;否则,可能会被GC常用于对内存敏感的程序中get()获取引用的对象弱引用W

2016-09-11 09:58:39 253

原创 JVM之常用JVM配置参数

Trace跟踪参数-verbose:gc-XX:+printGC打印GC简要信息[GC (Allocation Failure) 3344K->1296K(9728K), 0.0004129 secs][GC (Allocation Failure) 3344K->1296K(9728K), 0.0003914 secs][GC (Allocation Failure) 3344K->1

2016-09-11 09:49:07 607

原创 JVM之Java内存区域(一)

JVM构成JVM包括两个子系统和两个组件。两个子系统为: class loader(类装载)Execution engine(执行引擎)两个组件为: Runtime data area(运行时数据区)Native interface(本地接口)Class loader功能根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data are

2016-09-11 09:48:34 296

原创 Java多线程之同步容器与并发容器

同步容器VectorHashtableCollections.synchronziedXX并发容器ConcurrentMap基於Hashtable,段Segement,最大16個把粒度分細,每個段有自己的鎖共享變量用volatile關鍵字,第一時間獲得修改數據。從主內存讀取,不從工作內存讀取CopyonWrite容器JDK有兩種COW容器CopyOnWriteArrayListCopyOnWri

2016-09-06 23:11:31 379

原创 消费者生产者队列BlockQueue

8月的笔记import java.util.LinkedList;import java.util.concurrent.atomic.AtomicInteger;public class MyBlockQueue { //裝載元素的集合 private final LinkedList<Object> list = new LinkedList<Object>(); //

2016-09-06 23:09:43 1906 1

原创 Java多线程之线程同步

线程同步线程安全问题线程安全当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。synchronized可以在任意对象及方法上加锁,而加锁的这段代码称为”互斥区”或”临界区”关键字synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁, 所以代码中哪个线程先执行synchronized关键字的方法,哪个线程就持

2016-09-06 22:07:04 245

原创 Lambda表达式入门

Lambda表达式入门Java 8之前,大家应该有创建匿名内部类的体验,代码有点繁琐。Lambda表达式支持将代码块,作为方法参数,允许使用更简洁的代码,来创建只有一个抽象方法的接口的实例。Java 8里面,只有一个抽象方法的接口,叫做函数式接口,由@FunctionalInterface修饰,例如线程常用到的Runnable接口@FunctionalInterfacepublic interfa

2016-09-06 21:46:08 281

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除