使用MAT分析堆栈

1. 介绍

Eclipse MAT是eclipse提供的插件用于分析JAVA heap。试过很多分析heap的,但是没有比这个更好用的了。

PS:在mac high sierra上直接下载独立运行的MAT貌似会出问题卡死,我是本地直接下载了个。

请先阅读下MAT官方的DOC:MAT官方DOC

2. 基本概念

2.1 堆中包含的内容

All Objects:Class, fields, primitive values and references

All Classes:Classloader, name, super class, static fields......

metaspace OOM问题解决

1. 什么是metaspace

JDK8中去掉了原来的永久代,而用metaspace来替代。并且metaspace现在是使用了netive memory。

原来放在永久代里面的东西也全部放到元数据区了。元数据区主要包含以下内容:

name and fields of the class: 存放类名字、成员变量相关的元数据

methods of a clas......

JAVA后端问题定位和排错

1. 介绍

原本打算自己总结一下的。但是觉得人家总结的很好,我这里就不浪费笔墨了,给大家推荐一下文章即可。

linux后端诊断与调试技术

PPT-JVM问题定位和排错

下面我对文章中可以重点关注的一些点做一下强调。大家看的时候可以留意下。

2. 查找JAVA进程中消耗CPU最多的线程

这个问题大家可能经常碰到。传统的做法是:

top命令找出有问题Java进程及线程id:

a. 开启线程显示模式(shift+h)

b. 按CPU使用率排序(shift+p,如果按照内存排就shift+m)

c. 记下Java进程id及其CPU高的线程id

......

开源序列化框架google prorobuf3使用

1. 介绍

protobuf是一种非常流行的开源序列化框架。在很多开源软件中被广泛应用。例如netty4中就有protobuf的编码器。

本节主要参考propobuf官方文档和Language Guide (proto3)来对该序列化框架的JAVA中的使用做一些介绍。

2. protobuf3新特性

在Protocol Buffers v3.0.0 release note中我们可以看看protobuf3的新特性:

2.1 主要新特性

移除了required域和用户自定义默认值(类似[default = 1.0]这样的选项没有了)

移除了unknown域

移......

Google Guava介绍

1. 介绍

guava是google开源的一个工具包。其中有很多通用的功能,例如字符串处理、缓存、非空处理等等。

关于其功能和使用说明可以参考并发网上翻译的文章,这里不再赘述:

Google Guava官方教程(中文版)

为什么使用guava可以引用其官方PPT中的观点:

其实你可能发现,一些基本的校验完全可以自己写,但是。。

这些东西仅仅是看起来比较简单,实际上可能比我们想想的要复杂;

用一个公共的lib,别人可能更加容易理解你的代码;

当你用一个主流的开源包的时候,你可能在主流中;

当你发现一个可以提升的点的 时候,如果仅仅是修改自己的私有包,可能没有多少人能够......