郭朝的博客

—— 生命不息,奋斗不止,万事起于忽微,量变引起质变。

JVM 技术内幕——Java 内存模型

并发处理的广泛应用是使得Amdahl定律替代摩尔定律成为计算机性能发展原动力的根本原因。由于计算机的主内存与CPU的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近CPU运算速度的高速缓存(L1 Cache、L2 Cache、L3 Cache)来作为主内存与CPU之...

2018-11-19 18:43:24

阅读数:26

评论数:0

JVM 技术内幕——HotSpot VM 内的 JIT 编译器

在主流的商用虚拟机(Sun HotSpot、IBM J9)中,java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为 "热点代码"(...

2018-11-16 18:12:49

阅读数:21

评论数:0

JVM 技术内幕——JVM 类文件结构与类加载机制

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。实现语言无关性的基础是 VM 和字节码存储格式,JVM 不和包括 Java 在内的任何语言绑定,它只与 "Class 文件" 这种特定的二进制文件格式所关联,Class 文...

2018-07-30 10:41:35

阅读数:76

评论数:0

JVM 技术内幕——JVM 性能监控与故障处理工具

给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括运行日志、异常堆栈、GC 日志、线程快照 (threaddump/javacore 文件) 堆转储快照 (headdump/hprof 文件) 等。经常使用适当的 JVM 监控和分析的工具可以...

2018-07-21 16:23:04

阅读数:94

评论数:0

JVM 技术内幕——Serial/Serial Old收集器下对象的内存分配与回收策略

对象的内存分配,往大方向说,就是在堆上分配,对象主要分配在新生代的 Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配。少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置。

2018-07-17 17:11:49

阅读数:65

评论数:0

JVM 技术内幕——理解 GC 日志

阅读 GC 日志是处理 JVM 内存问题的基础技能,它只是一些人为确定的规则,每一种收集器的日志形式都是由它们自身的实现所决定的,但 JVM 设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性,例如下面两段典型的日志: 33.125: [GC [DefNew: 3324K-&gt...

2018-06-16 22:25:14

阅读数:95

评论数:0

JVM 技术内幕——HotSpot VM 的垃圾收集器

如果说收集方法是内存的方法论,那么垃圾收集器就是内存回收的具体实现。JVM 规范中对垃圾收集器应该如何实现并没有任何规定,因此不同厂商、不同版本的 JVM 所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。

2018-06-03 22:46:40

阅读数:108

评论数:0

JVM 技术内幕——对象存活判定算法、垃圾收集算法

目前内存的动态分配与内存回收技术已经相当成熟,一切进入了“自动化”的时代,那为什么还需要去了解GC和内存分配呢?答案很简单,当需要排查各种内存溢出、内存泄露问题时,GC成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。...

2018-05-02 23:16:49

阅读数:162

评论数:0

JVM 技术内幕——HotSpot VM 在堆中对象的创建、内存布局、访问

目前内存的动态分配与内存回收技术已经相当成熟,一切进入了“自动化”的时代,那为什么还需要去了解GC和内存分配呢?答案很简单,当需要排查各种内存溢出、内存泄露问题时,GC成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。...

2018-03-14 22:46:02

阅读数:130

评论数:0

JVM 技术内幕——走近 JVM、JVM 运行时数据区

JDK (Java语言、工具及工具API、Java SE API、JVM) 是用于支持 Java 程序开发的最小环境,JRE (Java SE API、JVM) 是支持 Java 程序运行的标准环境。首先看一下 Java 发展史: 版本 时间 内置虚拟机 代表技术 1.0 1...

2018-01-26 16:34:54

阅读数:263

评论数:0

基于 Redis 实现的分布式锁

分布式锁应用场景大都是用在高并发,大流量场景。当多个进程不在同一个系统中,就需要用分布式锁控制多个进程对资源的访问。本篇介绍的是基于 Redis 实现的分布式锁。首先看两个 Redis 的命令:SETNX key value。将key设置值为value,如果key不存在,这种情况下等同SET命令。...

2017-12-05 17:21:00

阅读数:2754

评论数:1

基于 Zookeeper 实现分布式锁

在我们进行单机应用开发,涉及并发同步的时候,我们往往采用 synchronized/Lock 方式来解决多线程间的代码同步问题。但当我们的应用是分布式部署的情况下,那么就需要一种更加高级的锁机制来处理这个进程级别的代码同步问题。那么接下来引出现在比较常用的几种分布式锁实现方案

2017-12-05 10:17:59

阅读数:908

评论数:0

Spring Boot 构建应用——整合 Disruptor 并发框架

Disruptor 是一个开源的并发框架,能够在无锁的情况下实现网络的 Queue 并发操作。

2017-11-06 21:55:30

阅读数:933

评论数:0

高并发系统下 TP性能、方法可用率 说明

Restful 本质上是一个优雅的 URI 表达方式,基于 Restful 设计的软件可以更简洁,更有层次,更易于实现缓存等机制。资源的状态和状态转移。下面来看一组 传统API 和 RESTful API 写法的对比。Restful API 用 URL 描述资源,用 HTTP 方法描述行为,使用 ...

2017-11-06 16:41:40

阅读数:1092

评论数:0

金丝雀发布、滚动发布、蓝绿发布

本文总结了当前主流的发布策略,每个的优劣,适用性,让开发人员特别是架构师对现代发布技术有一个更为清晰全面的认识,让大家能够根据自己的企业上下文,对发布策略做出正确的选型和实践。应用机器基本是预先静态分配好的,原来应用 A 住在这 n 台机器上,那么下次升级发布的应用 A 也住在这 n 台机器上,这...

2017-09-11 22:04:54

阅读数:485

评论数:0

Redis 数据库铁律

本文介绍了使用 Redis 时的开发规范,从键值设计、命令使用等方面进行说明,通过本文的介绍可以减少使用 Redis 过程中带来的问题。 1.键值设计铁律 - 铁律 Level 备注 key 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比...

2017-09-08 14:04:39

阅读数:2130

评论数:2

大型分布式系统与Java中间件技术选型

基本的服务化框架包括如下模块:统一的RPC框架,服务注册中心,管理平台。 有了这三个模块,就能实现基本的服务化。下面对三个模块进行具体分析。

2017-08-25 18:31:20

阅读数:4962

评论数:10

使用 Docker 将 Java Web 应用容器化

Docker 是一个轻量级容器技术,支持将软件编译成一个镜像 (image),在这个镜像里做好对软件的各种配置,然后发布这个镜像,使用者可以使用这个镜像,运行中的镜像称为容器,容器的启动速度是非常快的 (秒级别)。容器是完全使用沙箱机制,相互之间不会有任何接口。目前主流的软件以及非主流的软件大部分...

2017-08-24 16:22:41

阅读数:4803

评论数:6

Spring Boot 构建应用——整合 MongoDB

MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

2017-07-02 23:02:18

阅读数:2220

评论数:0

Spring Boot 构建应用——开发 RESTful API

Restful 本质上是一个优雅的 URI 表达方式,基于 Restful 设计的软件可以更简洁,更有层次,更易于实现缓存等机制。资源的状态和状态转移。Restful API 用 URL 描述资源,用 HTTP 方法描述行为,使用 HTTP 状态码来表示不同的结果,使用 json 交互数据(/ 模...

2017-06-23 21:36:04

阅读数:4567

评论数:1

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