什么是虚拟内存?

在讨论如何监控linux上的虚拟内存(Virtual Memory)之前,我先简单介绍下虚拟内存的基本概念。当前市面上的主流操作系统都支持虚拟内存。使用虚拟内存意味着程序请求的内存地址是虚拟的,而不是直接请求的物理内存的地址。虚拟内存地址不仅可以映射到物理内存地址,同样也可以映射到磁盘上的某个分块。因此,程序可以使用超过物理内存大小的内存。

阅读更多

大家知道,在计算中,数据的存储器常见的有内存,硬盘,为了提高CPU的访问速度,通常还会又L1,L2,L3缓存。根据CPU访问速度由快到慢排序的话,依次是L1缓存->L2缓存->L3缓存->内存->磁盘,且从L1缓存到磁盘,存储容量通常越来越大。所以,L1缓存通常最快也最小,而且每个CPU核心都有独立的L1缓存;L2缓存稍大稍慢,且每个CPU核心都有一个L2缓存;L3缓存则更大更慢,被单个CPU插槽上的所有核心共享。主内存则不必多说,被所有CPU核心共享,访问速度则更慢。

CPU在访问内存数据的时候,首先会检查L1缓存中是否存在,如果不存在,则会搜寻L2缓存,其次L3缓存,如果缓存中都没有,则需要到内存中去拿数据。经过的节点越多,耗时则越长,应用程序最好尽量保证缓存尽早命中,即保证数据缓存在L1缓存中。

阅读更多

disruptor是一个高并发的框架,该项目源于LMAX。LMAX是一个高频交易系统,他们早起的设计多是基于SEDA和Actors来提高吞吐量,通过无数的性能分析,他们发现队列往往成为多级系统中最耗时的一部分,并尝试了开发更高性能的队列。但最终发现,队列作为一种主要的数据结构,主要用于解决生产者,消费者问题,以及存储数据,并不能满足他们的需求。而disruptor就是他们设计开发的一种并发结构,具有很高的吞吐量和很低的时延。

复杂的并发问题

在并发情况下,通常会有两个或者更多的任务同时执行,并且多个任务会同时访问同一个资源。资源可以是一个文件,数据库,端口,甚至内存地址。

对于并发代码,我们关心两点,一个是互斥,一个是修改的可见性。互斥负责管理资源的更新,可见性则指如何保证改动对其他线程可见。在大多数的环境中,写操作是系统中最耗时的操作,允许多个线程并发写同一个资源需要复杂和繁重的协调。通常通过锁策略来进行协调,然而不可否认的一点,加锁通常意味着增加时延。

We are trying to measure a server’s SSL configurations. So, I wrote this article to list what conditions we should take in concern, and what are the related exceptions in Java.

阅读更多

Java中的引用

Java和C++同样是一种面向对象的语言,但是Java提供了GC机制,所以Java程序员不需要像C++那样自己负责内存的分配和释放。在Java中,变量可以分为两类,基本类型和引用对象,也就是说,Java中除了基本类型,其他的变量都是以引用(Reference)的形式存在的,JVM判断一段内存是否可以被GC也是通过判断该内存是否被引用。

所以说,引用是Java中一个重要的概念,主要存在四种引用,分别是:

阅读更多

JDK9中最重要的一个新功能就是模块系统,但是我们为啥需要模块系统呢?说穿了,模块系统为我们提供了一个全新的组织JAVA程序的方式,下面让我们看看在JDK9之前,我们在开发JAVA程序的过程中遇到了哪些问题。

阅读更多

JDK9是今年7月份发布的,是JDK(Java Development Kit)的第9个major release的版本。本文主要介绍下JDK9的几个主要新特性,至于所有的feature,可以参考文献1

阅读更多

try-with-resources是jdk7引入的新功能,它通过一个try语句,声明一个或着多个资源。这里的资源指的是实现了closeable或者AutoCloseable接口的类的实例。在try-with-resource中声明的资源,不管在整个过程中有没有抛出异常,都会把声明的资源释放掉。

阅读更多

在不适用其他监控工具的情况,我们改如何知道一个网站的访问速度呢(不包括页面渲染,js请求等)?不妨看看curl,它为我们提供了很多特色功能,其中就包括可以统计http请求和响应的各阶段的时间统计,并可以通过设置一些参数打印出来。

阅读更多

最近处理了两个让人头疼的BUG。代码一直没有改过,之前一直也没出过问题,但是最近却老是报NPE的问题。我们的项目中,有个多线程的异步状态机框架,多线程之间存在着数据的共享,直觉让我嗅到了并发问题。

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×