- 博客(200)
- 资源 (17)
- 收藏
- 关注
原创 深入理解JVM学习笔记(二十九、JVM 内存分配----空间分配担保策略)
一、概念空间分配担保我们在二十六章也提到过,当内存分配过程中内存不够,JVM会向老年代借用内存,这就是内存分配担保策略。内存分配担保策略JVM默认是启用的,我么可以用-XX:HandlePromotionFailure来禁用内存分配担保策略。开启:-XX:+HandlePromotionFailure关闭:-XX:-HandlePromotionFailure二、策略1、当新生...
2018-11-13 08:16:25 1109
原创 深入理解JVM学习笔记(二十八、JVM 内存分配----长期存活的对象分配到老年代)
一、长期存活的对象我们讲到长期存活的对象分配到老年代,那么到底怎么样算是长期存活的对象呢。和上一章的大对象一样,JVM也给我们提供了参数去进行配置:-XX:MaxTenu ringThresho。参数默认是15.二、对象年龄机制我们每一个对象有一个AGE属性。当垃圾回收被调用一次AGE+1。当AGE达到15或-XX:MaxTenu ringThresho所指定的值时,JVM便认为对象是...
2018-11-13 08:05:48 378
原创 深入理解JVM学习笔记(二十七、JVM 内存分配----大对象直接分配到老年代)
一、验证首先我们编写如下程序package com.zjt.test.jvm008;public class Main { public static void main(String[] args) { byte [] b4 = new byte[40 * 1024 * 1024]; }}打开GC控制台输出运行程序,可以看到如下运行结果。 从上图可以看出,在...
2018-11-11 17:10:06 6642 4
原创 深入理解JVM学习笔记(二十六、JVM 内存分配----优先分配到eden&空间分配担保)
一、优先分配到eden我们写一个程序来验证对象优先分配到eden,源码如下:package com.zjt.test.jvm008;public class Main { public static void main(String[] args) { byte [] b1 = new byte[4 * 1024 * 1024]; }} 在运行main方法前进行如下配...
2018-11-10 17:51:28 843 1
原创 深入理解JVM学习笔记(二十五、JVM 内存分配----概述)
前面我们已经讲到JVM的垃圾回收策略,但是回收的前提是堆内存中有对象数据。那么接下来我们就讲讲JVM在构造对象时候在堆中的内存是如何分配的。内存分配的整体策略:接下来几章我们会详细介绍上述策略。...
2018-10-19 07:29:14 213
原创 深入理解JVM学习笔记(二十四、JVM 垃圾回收机制---主流垃圾收集器介绍)
JAVA的跨平台性决定了其部署的服务器类型各异,其内存结构也是大不相同的。因此针对不同的内存结构适用于不同的垃圾收集策略。因此也需要各种各样的垃圾收集器来满足需求。接下来,我们介绍下市场上主流的几个垃圾收集器。一、Serial收集器特点:1、最基本、发展最悠久2、单线程垃圾收集器要理解单线程垃圾收集器,可以举例如下图所示。从图中我们可以看出,当JVM需要进行垃圾回收时候,需要将...
2018-09-16 23:16:53 416
原创 深入理解JVM学习笔记(二十三、JVM 垃圾回收机制---如何回收垃圾---回收策略【标记整理算法&分代收集算法】)
可能大家已经注意到了,前几节说的算法都是针对新生代的,那么本节我们来说说老年代的回收算法。 老年代与新生代不同,我们之前提到过,新生代中大约有10%是不可被会收的对象。在老年代恰恰相反,只有大约10%的对象可以被回收。这中特点也就决定了老年代垃圾回收算法会和新生代不同。一、标记整理算法 标记整理算法分为两步: (1)、标记...
2018-09-16 17:18:56 303 2
原创 深入理解JVM学习笔记(二十二、JVM 垃圾回收机制---如何回收垃圾---回收策略【复制算法】)
上一节我们讲到了标记-清除算法因为需要进行两次内存扫描导致效率不高,那么这一节我们介绍一种复制算法,比较好的解决了这个问题。 讲复制算法前,我们先回顾一下JVM的内存结构。JVM内存大体分为两大块,分别为线程共享区、线程独占区。其中线程共享区主要包括堆内存、方法区。线程独占区主要包括栈内存、本地方法栈、程序计数器。而我们垃圾回收主要针对的是线程共享区的堆内存。 ...
2018-09-16 15:22:04 223
原创 深入理解JVM学习笔记(二十一、JVM 垃圾回收机制---如何回收垃圾---回收策略【标记-清除算法】)
标记-清除算法是GC中最基础的算法。从名称上看,其可以拆分为两部分:标记(mark)和清除(sweep)。此算法可以分为两个阶段,一个是标记阶段,一个是清除阶段,下面就分别做一下介绍。(1)标记阶段: 在此阶段,垃圾回收器会从mutator(应用程序)根对象开始遍历。每一个可以从根对象访问到的对象都会被添加一个标识,于是这个对象就被标识为可到达对象。(2)...
2018-09-14 08:22:30 495
原创 深入理解JVM学习笔记(二十、JVM 垃圾回收机制---如何判断对象是否为垃圾【可达性分析法】)
可达性分析法 在主流的商用程序语言中(Java和C#),都是使用可达性分析算法判断对象是否存活的。这个算法的基本思路就是通过一系列名为GC Roots的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当...
2018-09-13 08:18:59 353
原创 深入理解JVM学习笔记(十九、JVM 垃圾回收机制---如何判断对象是否为垃圾【引用计数法】)
一、引用计数法 引用计数算法作为垃圾收集器最早的算法,有其优势,也有其劣势,虽然现在的JVM都不再采用引用计数算法进行垃圾回收【例如Sun的Java hotspot采用了火车算法进行垃圾回收】,但这种算法也并未被淘汰,在著名的单进程高并发缓存Redis中依然采用这种算法来进行内存回收。 直白一点,引用计数算法就是对于创建的每一个对象都有一个与之关联的计数器,这个...
2018-09-11 23:27:08 458
原创 大数据(040)机器学习【线性回归】
一、一元一次线性回归 如果用上述概念去理解线性回归与机器学习的关系还有点抽象,那么下面我们来举一个具体的例子来说明。 历史上美国法社会见的次数很多,失败的次数也很多。基于历史样本,我们希望分析火箭中一个组成(O-Ring)温度对火箭发射成功与否的模型。 因此,我们利用y=ax+b模型。将x置为温度,将y置为火箭发射失败次数。通过历史数据可...
2018-08-15 08:24:54 1433
原创 深入理解JVM学习笔记(十八、JVM 垃圾回收机制---前言)
众所周知,java语言不需要像c++那样需要自己申请内存,自己释放内存,这些都是JVM帮我们做好了的,但是对于一名java程序员,想要更近自己的水平更上一层楼,就要去了解GC的工作原理,根据原理才能写出更好的更优的程序。 接下来,我们从三个方面分析JVM 的垃圾回收机制(当然这个三点中还有一些小点,下面已解决列出): 1、如何判断对象是否为垃...
2018-08-14 23:40:42 342
原创 大数据(039)机器学习【机器学习语言---R语言基础语法实践】
本章节提供了两个脚本,包含R语言的基础类型和结构。可以在本地运行学习。1、data_type.R#numeric数值型x <- c(1:10)mode(x)#complex复数类型x <- 100 + 1imode(x)#logical逻辑型x <- c(sample(1:10, 5))x <- x==3mode(x)...
2018-08-14 08:05:17 164
原创 深入理解JVM学习笔记(十七、对象的访问定位)
之前我们理解java栈堆时可能会说栈中存储指针,指向堆中的对象地址。其实这种说法是不严谨的,其一是java中没有指针的概念,其二是栈中不一定存储对象的地址,也可能是其他地址。那么问题来了,对象是如何进行访问定位的呢。 虚拟机栈是 java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出...
2018-08-06 08:21:39 201
转载 深入理解JVM学习笔记(十六、探究对象的结构)
在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。下图是普通对象实例与数组对象实例的数据结构:对象头HotSpot虚拟机的对象头包括两部分信息:markword 第一部分markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分...
2018-07-31 08:14:11 214
原创 深入理解JVM学习笔记(十五、对象的创建)
下图是JAVA虚拟机对象的创建过程:现在我们就以下几点说明对象的创建:1、给对象分配内存给对象分配内存有指针碰撞和空闲列表两种方式。具体描述如下图所示。按时2、线程安全性问题 无论是指针碰撞还是空闲列表,在高并发情况下都有可能存在线程安全性问题。解决方案如下: 1、加同步锁。 安全但是执行效率低。 ...
2018-07-26 08:16:26 212
原创 深入理解JVM学习笔记(十四、Java内存区域-运行时常量池和直接内存)
1、运行时常量池 运行时常量池(Runtime Constant Pool),它是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述等信息外,还有一项信息是常量池(Constant Pool Table),用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存放到常量池中。 运行时常量是相对于常量来说的,它具备一个重要特征是:动态...
2018-07-23 08:22:31 911
原创 深入理解JVM学习笔记(十三、JAVA虚拟机内存管理---JAVA虚拟机方法区)
1、JAVA虚拟机方法区 JAVA虚拟机方法区在JAVA虚拟机内存模型中位置如下图所示。 方法区和堆一样,是各个线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、和编译器编译后的代码(也就是存储字节码文件。.class)等数据,这里可以看到常量也会在方法区中,是因为方法区中有一个运行时常量池,为什么叫运行时常量池,因为在编译后期生成的是各种字面量(字面...
2018-06-24 16:53:03 322
原创 深入理解JVM学习笔记(十二、JAVA虚拟机内存管理---堆)
1、JAVA堆概述 JAVA堆在JAVA虚拟机内存模型中位置如下图所示。 堆一种通用性的内存池(存在于RAM中),用于存放所以的JAVA对象。 修改JAVA堆内存大小的参数:-Xmx -Xms -Xms是用来设置你的应用程序能够使用的最大内存数,如果程序要花很大内存的话,那就需要修改增加此数的值。 -Xms是用它...
2018-06-24 16:41:38 198
原创 深入理解JVM学习笔记(十一、JAVA虚拟机内存管理---JAVA虚拟机本地方法栈)
1、JAVA虚拟机本地方法栈概述 JAVA虚拟机本地方法栈在JAVA虚拟机内存模型中位置如下图所示。 本地方法栈和虚拟机栈是非常相似的。其不同点如下:虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native方法服务。...
2018-06-24 16:30:25 300
原创 深入理解JVM学习笔记(十、JAVA虚拟机内存管理---JAVA虚拟机栈)
1、JAVA虚拟机栈概述 JAVA虚拟机栈在JAVA虚拟机内存模型中位置如下图所示。 JAVA虚拟机栈是描述JAVA方法执行的动态内存模型。从上图可以看出虚拟机栈中包含很多栈帧。 当虚拟机栈已内存已经使用完了还要继续给里面入栈帧,则会出现我们常见的一个错误,即java.lang.StackOverflowError.2、栈帧 栈帧(stack...
2018-06-24 16:26:30 308
原创 深入理解JVM学习笔记(八、JAVA虚拟机内存管理---JAVA内存区域简介)
JAVA虚拟机内存模型如下图所示: 上图我们可以看到JAVA虚拟机内存模型分为两大块:线程共享区和线程独占区域。 线程共享区:方法区和堆是分配给进程的,也就是所有线程共享的。 线程独占区:栈和程序计数器,则是分配给每个独立线程的,是运行过程中必不可少的资源。其中对各个模块详细解释如下:1、方法区(Method Area) 方法区(Method...
2018-06-21 08:19:58 223 2
原创 深入理解JVM学习笔记(七、JAVA虚拟机介绍)
下面,我们对上述JAVA虚拟机产品进行逐一介绍:1、Sun Classic VM 世界上第一款商用虚拟机,只能使用纯解释器的方式来执行JAVA代码,已经被淘汰。2、Exact VM(Exact Memory Management)(准确式内存管理) 已经具备现代高性能虚拟机的雏形:如两级即时编译器、编译器与解释器混合工作模式等。但是只在Solaris平台...
2018-06-21 08:00:36 447
原创 深入理解JVM学习笔记(六、JAVA技术体系)
JAVA技术体系包含如下:JAV程序语言JAVA编译器 (JAVA CLASS文件格式)JAVA API第三方JAVA 类库各个硬件平台上的JAV虚拟机
2018-06-17 11:50:15 235
原创 深入理解JVM学习笔记(五、JAVA发展历史)
一、JDK Version 1.0 开发代号为Oak(橡树),于1996-01-23发行 其提出了“Write Once,Run Anywhere”的口号二、JDK Version 1.1于1997-02-19发行。引入的新特性包括:引入JDBC(Java Database Connectivity);引入jar文件格式,沿用至今;引入Java Bean;引入RMI(Remote Me...
2018-06-16 20:28:19 267
原创 深入理解JVM学习笔记(四、JVM可视化监控工具---JConsole)
一、找到JConsole启动exe 前往JDK安装目录,在其bin目录下寻找jconsole.exe文件。二、打开JConsole 因为我们已经将JDK的bin目录配置到了系统变量中,因此我们可以直接打开cmd窗口,输入jconsole来启动她。启动后如下图所示: ...
2018-06-06 23:52:08 321 2
原创 深入理解JVM学习笔记(三、模拟内存溢出 内存监控方法)
模拟内存溢出一、新建java项目 二、代码如下package com.zjt.test.jvm003;public class Demo {}package com.zjt.test.jvm003;import java.util.ArrayList;public class Main { public static void main(String[] args) {...
2018-06-01 00:24:48 1505
原创 深入理解JVM学习笔记(二、JDK、JRE、JVM之间的关系)
JDK=JAVA DEVELOPEMENT KITJRE=JAVA RUNTIME ENVIRONIMENTJVM=JAVA VISUAL MACHINEJDK>JRE>JVM
2018-05-29 08:28:31 315
原创 大数据(038)机器学习【机器学习语言---R语言小试牛刀】
安装完R语言和RStudio后,我们便可以开始小试牛刀了。一、打开RStudio打开后如下图所示我们现在桌面建文件夹r_workspace,再按下图所示将工作空间切换至桌面r_workspace下二、R数据介绍R语言数据结构(6种):• 向量 R的基本数据结构式向量。向量存储一组有序的值,称为元素 一个向量可以包含任意数量的元素。然而
2017-12-18 21:20:43 563
原创 大数据(037)机器学习【机器学习语言---R语言介绍】
特点介绍 • 主要用于统计分析、绘图、数据挖掘 • R内置多种统计学及数字分析功能。R的功能也可以通过安装包(Packages,用户撰写的功能)增强。 • 因为S的血缘,R比其他统计学或数学专用的编程语言有更强的面向对象(面向对象程序设计)功能。其他介绍 • R的另一强项是绘图功能,制图具有印刷的素质,也可加入数学符号。 • 虽然R主要用于
2017-12-05 22:48:54 546
原创 大数据(036)机器学习【相关概念】
说到机器学习,不由得将其和我们的大脑进行类别: 我们大脑依据经验来做判断; 机器学习依据数据来做判断。 机器学习的本质: 通过大量的数据训练出一个模型,然后将新的数据带入模型,模型会给出相对正确的结果。 说道这里,有一个关键词:训练模型。究竟怎么训练模型呢。其实是通过算法来训练模型。 算法就是公式。 下面举个
2017-12-05 21:44:48 232
原创 大数据(035)HBASE【mapreduce操作hbase】
现在有一些大的文件,需要存入HBase中,其思想是先把文件传到HDFS上,利用map阶段读取对,可在reduce把这些键值对上传到HBase中。package test;import java.io.IOException;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;
2017-11-20 22:58:19 547
原创 大数据(034)HBASE【调优】
1. 表的设计1.1 Pre-CreatingRegions默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。
2017-11-20 21:28:17 386
原创 大数据(032)HBASE【Hbase JavaAPI访问HBase】
这里介绍使用java api来访问和操作HBase,例如create、delete、select、update等操作。1.HBase配置配置HBase使用的zookeeper集群地址和端口。private static Configuration configuration;static { configuration = HBaseConfiguration.cr
2017-11-07 22:09:42 640
原创 大数据(031)HBASE【Hbase Shell 常用命令】
一、建表语句hbase(main):003:0> create 't1', 'f1' , 'f2' , 'f3' --建表语句 0 row(s) in 9.5860 seconds=> Hbase::Table - t1hbase(main):004:0> desc 't1' --查看t1列族信息Table t1 is ENABLED
2017-11-05 11:10:16 1897
原创 大数据(030)HBASE【Hbase 环境安装 -- 完全分布式安装】
一、前提 Hadoop和Zookeeper环境正常。二、步骤 1、编辑hbase-site.xml hbase.rootdir hdfs://namenode.example.org:8020(1)/hbase hbase.cluster.distributed true hbase.
2017-11-04 20:31:15 332
大数据系统学习笔记-0002 - Hadoop集群搭建 - 资源包
2022-06-26
flink-1.10.1-bin-scala_2.12.tgz.zip
2020-09-14
scala-SDK-4.2.0-vfinal-2.11-win32.win32.x86_64.zip
2019-12-23
scala工具包.zip
2019-12-23
elasticsearch_license&marvel-agent.zip
2019-11-14
Hadoop (十五)Hadoop-MR编程 -- 【使用hadoop计算网页之间的PageRank值----编程】
2017-08-15
Hadoop (十)Hadoop-第一次使用eclipse&java&hadoop分析简单数据
2017-08-03
SSH整合示例项目 hibernate5.2.3+struts2.5.2+spring4.3.3.zip
2016-10-18
SSH项目整合示例【OpenSessionInView】所用到的jar包
2016-10-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人