自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KISimple的专栏

-XX:+HeapDumpOnOutOfMemoryError

原创 浅析HashMap与WeakHashMap的区别

也就是说,当持有一个对象的弱引用并不会阻止这个对象被回收。针对这一点我们通过源码来看下HashMap与WeakHashMap的区别。

2019-04-27 12:37:57

阅读数 930

评论数 0

原创 Flink如何实现动态表与静态表的Join操作

当前Flink版本(1.5),Table API与SQL都只支持流表与流表之间的Join操作,然而很多业务场景都需要流表与静态表之间的Join

2019-04-22 20:24:23

阅读数 637

评论数 1

原创 JStack实现浅析

相信Java程序员对jstack都不陌生,今天我们坑进OpenJDK源码来看看jstack是怎么实现的。 通过官方文档的介绍,我们可以知道jstack的源码在OpenJDK的jdk子项目下,sun.tools.jstack.JStack,

2019-04-05 17:22:18

阅读数 195

评论数 0

原创 Flink HDFS Sink 如何保证 exactly-once 语义

本文将从源码层面来分析在Flink中是如何保证sink数据到HDFS的exactly-once语义的。 Flink中sink数据到HDFS是由BucketingSink来完成。BucketingSink产生的HDFS文件路径格式如下, /{base/path}/{bucket/path}/{par...

2018-11-12 20:32:01

阅读数 1643

评论数 1

原创 Spark TeraSort 实现与调优

TeraSort简介 TeraSort是为Hadoop参加Sort Benchmark而开发的程序包。其中包含3个程序: TeraGen:用来生成测试数据; TeraSort:用来对生成的测试数据进行排序; TeraValidate:用来校验排序结果的正确性; Spark的TeraS...

2018-03-12 20:38:03

阅读数 1243

评论数 0

原创 SparkSQL如何实现聚合下推

简介 在之前性能分析的文章中,我们用火焰图看到了程序的一个瓶颈点,Spark的聚合操作执行, 其中GeneratedIterator#agg_doAggregateWithKeys是使用Code Generation技术生成的代码,生成的代码可参考这里,或者这样来看, scala&...

2018-03-05 13:14:47

阅读数 2170

评论数 10

原创 SparkSQL性能分析与优化及相关工具小结

简介 前段时间的工作是将内部一个OLAP系统Hxxx作为一个数据源接入到SparkSQL并进行优化。本文总结下调优过程当中一些可以借鉴与讨论的地方,鉴于本人水平有限,还请有这方面调优经验的同学不吝赐教^_^ 优化主要是从两个方面来考虑, 1. 集群粒度的调优,包括CPU与内存分配,数据分布,...

2018-03-02 21:24:38

阅读数 7587

评论数 1

翻译 Java编译概览

将源文件编译成类文件并不是一个简单的过程,通常可以分成三个阶段。

2015-12-27 20:57:04

阅读数 498

评论数 0

原创 BTrace简介及实现浅析

BTrace客户端使用Attach API attach到目标VM,并加载agent包; agent打开socket来与客户端进行通信; 客户端给agent发送InstrumentCommand,其中包含BTrace脚本编译后的字节码; agent通过Attach API和ASM来完成满足B...

2015-07-19 22:38:37

阅读数 2408

评论数 0

原创 HotSpotVM Serviceability Agent 实现浅析

可以看到SA中有两种方式来获取HotSpotVM里面的变量地址,一种是通过符号表,另一种是通过VMStructEntry这种VM提供的元信息(也就是通过&运算获取的地址)。

2015-06-15 00:17:19

阅读数 2094

评论数 2

原创 HotSpotVM 字符串实现浅析

我们可以借助SA写一个小工具来dump下StringTable中所有的oop(SA真是个好东西哇:)

2015-04-19 13:49:03

阅读数 1163

评论数 0

原创 OpenJDK类加载实现浅析

1. loadClass 用于实现类加载的代理机制; 2. findClass 用于找到类的二进制表示; 3. defineClass 用于将类的二进制表示转化成`Class`对象,这一步由虚拟机来完成;

2015-03-29 14:47:48

阅读数 2123

评论数 0

原创 HotSpotVM 对象机制实现浅析

An “oop”, or “ordinary object pointer” in HotSpot parlance is a managed pointer to an object. It is normally the same size as a native machine pointe...

2015-03-26 00:03:03

阅读数 3044

评论数 1

翻译 HotSpot运行时概览

This section introduces key concepts associated with the major subsystems of the HotSpot runtime system. The following topics are covered:

2015-03-23 06:14:25

阅读数 1387

评论数 0

原创 HotSpotVM JNI 实现浅析

最近想看下HotSpotVM是怎么找到一个native方法的实现的,例如Thread.start0和FileChannelImpl.transferTo0,最后发现是两种不同的方式。

2015-03-13 15:36:57

阅读数 1903

评论数 0

原创 HotSpot SA #3:FinalizerInfo

前面我们已经把玩过SA工具中的JStack和ClassDump,今天再来看个好玩的,FinalizerInfo。

2015-03-10 19:40:43

阅读数 993

评论数 0

原创 OpenJDK源码索引

OpenJDK 7u 下有三个比较重要的子工程:

2015-03-07 01:56:41

阅读数 867

评论数 0

原创 Java官方文档索引

之前一直感觉Java的官方文档有些杂乱,最近特意整理了一下,仅供参考。

2015-03-07 01:30:16

阅读数 3184

评论数 1

翻译 Storm基本原理

Although the queues and workers paradigm breaks down for large numbers of messages, message processing is clearly the fundamental paradigm for realti...

2015-03-05 00:03:04

阅读数 1034

评论数 0

原创 Java的BigDecimal如何解决浮点数精度问题

BigDecimal的解决方案就是,不使用二进制,而是使用十进制(BigInteger)+小数点位置(scale)来表示小数,

2015-02-16 00:30:31

阅读数 5378

评论数 2

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