- 浏览: 58889 次
- 性别:
- 来自: 北京
最新评论
-
陌路千里:
有所收获
Hotspot中Java Heap的构成与创建
文章列表
一、引言
我们会发现$JAVA_HOME/bin/目录下的java,jmap,jstack,jstat,jinfo等等都是二进制的文件,而我们又很容易发现,java是与一个源文件java.c对应的,却看不到jmap,jstack,jstat等对应的源文件,那么这些工具又是怎么生成的呢,下面介绍下我是如何发现这些工具是怎样生成的,以jmap为例。
二、以jmap为例,介绍这些工具如何生成的。
首先想到的是,build整个openjdk,然后根据build信息查找jmap是如何生成的。
build openjdk
,这里有个详细的参考,rednaxelafx大神的作 ...
一、
语法方面注意
if /while /for
格式
1.
if
语句
注意
if
与
[]
之间的空格;条件表达式前后都有空格
实例
if [ $# -lt 3 ];then
echo usage: `basename $0` arg1 arg2 arg2
exit 1
fi
echo $1
echo $2
echo $3
2.
while
语句
注意
while
与
[]
空格;件表达 ...
Linux free命令 ------笔记
- 博客分类:
- linux
参数用法说明
man free
可以得到详细的信息,这里贴个中文的,读起来快。
语 法:
free [-bkmotV][-s <
间隔秒数
>]
补充说明:
free
指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
参 数:
-b
以
Byte
为单位显示内存使用情况。
-k
以
KB
为单位显示内存使用情况。
-m
以
MB
为单位显示内存使用情况。
-o
不 ...
理清字符集和字符编码关系
- 博客分类:
- Java
什么是字符集
字符(Character)是文字与符号的总称,包括文字、图形符号、数学符号等。
一组抽象字符的集合就是字符 集(Charset)。
字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。
常见的字符集包括ASCII字符集(由控制字符和图形字符组成)、GB2312字集(简体字集),GBK字集(简繁字集),通用字符集(Universal Character Set,UCS),Unicode字集(同UCS)。
什么是字符编码
字符编码(Char ...
Perf
是用来进行软件性能分析的工具。它随
Linux
内核代码一同发布和维护,由内核社区维护和发展。
这里推荐两篇介绍
perf
的文章
英文原版的介绍
https://perf.wiki.kernel.org/index.php/Tutorial
中文的使用介绍
http://www.ibm.com/developerworks/cn/linux/l-cn-perf1/index.html
http://www.ibm.com/developerworks/cn/l ...
1.Perftools
介绍
项目地址
http://code.google.com/p/gperftools/
引用原文里的一段英文介绍
Perftools is a collection of a
high-performance multi-threaded malloc() implementation, plus some pretty nifty
performance analysis tools.
Perftools
是一个高效的多线程
malloc
实现,附加一些很好的性能分析工具。使用这个 ...
1.从Exception往上介绍相关结构、代码
class Exception
里面没有什么新鲜东西,它继承自
class Throwable
,接下来我们看一下
Throwable
的结构,在它的构造函数中调用了
fillInStackTrace
这个函数。接下来我们看看这个函数干了些什么。
fillInStackTrace
函数的声明为
public synchronized native Throwable fillInStackTrace();
这是个
native
方法。
然后我们到jdk的代 ...
前些天做了两件事,1.strip符号表;2.查看so文件的代码是否inline。操作步骤如下
1.
readelf -sW libjvm.so | grep 'OBJECT *LOCAL *HIDDEN' | awk '{print $8}' | egrep '[.][0-9]+$' > strip_sym.lst
objcopy --strip-symbols=strip_sym.lst -v xxx.so
这样得到的新so文件就不含有strip掉的符号信息了,strip过程时间会稍长一点。
2.
objdump -dw xxx. ...
使用vtune分析hadoop
- 博客分类:
- hadoop
1.
使用
vtune
分析
tasktracker,jobtracker,datanode
1.1在
conf/hadoop-env.sh
中添加如下修改,这样在
vtune
的结果中能看到
jit
信息。
export AMPLXE_EXPERIMENTAL=1
1.2在
bin/hadoop
中,将如下语句进行替换。
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLAS ...
Hotspot中Java Heap的构成与创建
- 博客分类:
- JVM
1.
JavaHeap
的构成
Java Heap
包含三个部分
YoungGen,OldGen,PermGen
三个部分,亦叫作年轻代,年老代,永久代。
DefNewGeneration
是
YoungGen
的一个实现,包含
_eden_space,
_from_space, _to_space
三个部分。在
YoungGen
中分配对象的时候会在
eden
中进行分配,
from
和
to
是在
ygc
的过程中用到的,将
eden
和
from
中存活的对象拷贝到
to
中,每一次ygc,from和to的角色 ...
1.
介绍
Vtune
是
intel
的一款性能分析工具,其既可以分析某种应用的特性,也可以检测整个系统的特性,能够找出热点瓶颈的所在,给开发者提供良好的优化思路。
2.Vtune
下载,安装
Vtune
有
windows
版本和
linux
版本,有收费的,试用的,免费的。本人使用的是一款试用版本,
vtune
地址
http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/
,下载前需要注册账号,得到序列号,安装的时候需要用到。
安装
vtu ...
1.Oprofile
安装
下载地址
http://oprofile.sourceforge.net/download/
,安装过程略
2.使用
2.1
启动
oprofile
,
opcontrol
--vmlinux=/usr/lib/debug/lib/modules/2.6.18-164.el5debug/vmlinux –start
这里如果没有
vmlinux
的话,去下一个与
kenerl
相同版本的带
debug
信息的
kernal
安装下,我这里下载了
kernel-debug-debuginfo ...
1.源码中WorkGang, GangWorker结构关系
SharedHeap的结构如下,在结构中含有成员FlexibleWorkGang* _workers;
class SharedHeap : public CollectedHeap {
friend class VMStructs;
friend class VM_GC_Operation;
friend class VM_CGC_Operation;
private:
// For claiming strong_roots tasks.
SubTasksDone* _proc ...
1.openjdk源码下载
http://download.java.net/openjdk/jdk6/
2.将打包文件解压,在解压目录内运行下面shell命令,添加-g选项
for file in `grep "\-O3" * -r | awk -F: '{print $1}' `; do sed -i 's/\-O3/\-g/g' $file; done
准备工作做好后,开始build,我所运行的系统环境Ubuntu 11.04
3. 开始安装
sudo apt-get build-dep openjdk- ...