ubuntu下java home目录是
tianzhao@tianzhao-VirtualBox:~/hadoop-0.20.2-cdh3u0/conf$ echo $JAVA_HOME
/usr/
相关java-options: -server -Xmx40g -Xms40g -Xmn10g -XX:MaxDirectMemorySize=1024m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC
参数的含义
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
-vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了
-Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=64M JVM初始分配的非堆内存
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
http://engineering.linkedin.com/garbage-collection/garbage-collection-optimization-high-throughput-and-low-latency-java-applications
https://code.google.com/p/gclogviewer/
btrace
Byteman
bin/hadoop
HADOOP_OPTS=”$HADOOP_OPTS -Dcom.sun.management.jmxremote.port=22801 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false”
-XX:+HeapDumpOnOutOfMemoryError
config/hadoop-env.sh
#export HADOOP_OPTS=”-server -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -verbosegc -XX:+PrintGCDetails -XX:GCHeapFreeLimit=5 -Xms400m -Xmx400m -Xmn60m”
export HADOOP_OPTS=”-server -XX:+HeapDumpOnOutOfMemoryError”
export HADOOP_OPTS=”-server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java_pid<pid>.hprof”
JVM Settings The following can be helpful for diagnosing GC issues:
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCCause
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-XX:+PrintClassHistogramAfterFullGC
-XX:+PrintClassHistogramBeforeFullGC
-XX:PrintFLSStatistics=2
-XX:+PrintAdaptiveSizePolicy
-XX:+PrintSafepointStatistics
-XX:PrintSafepointStatisticsCount=1
netstat -na|grep 22801 查看22801端口是否已在监听。如果没有请检查你的配置。
jconsole
ip:22801
gc优化设置:
http://www.slideshare.net/cuonghuutran/gc-andpagescanattacksbylinux?from_search=37
$ jps
4704 Jps
12752 JobShell
$jps -mlVv
jps -l
jps -lm
$ jstack 12752
$ jstack -l 12752
$ jmap -heap 12752
$ jmap -dump:format=b,file=jmap.bin 12752
jinfo:打印JVM启动内部信息,譬如启动参数、JVM版本、操作系统信息等,具体可参见JVM Manage API的OperatingSystem和Runtime这两个Bean,本功能基于JVM Manage API实现。最常用的使用格式:
jinfo pid
jstat:一个内存和垃圾回收情况的统计工具
jmap:当前的堆内存信息dump,JDK6中支持dump到一个文件,由其他分析程序对堆内存进行分析(譬如jhat/Eclipse Memory Anaylzer)。
jmap -histo:live 30255 > jmapHisto.txt
jmap -histo 30255 //不会触发full gc, -histo:live会触发full gc
If you run jmap -histo:live, that will force a full GC on the heap before it prints anything out.
主动触发full gc 的脚本:
#!/bin/bash
for i in `ps aux | grep -F regionserver | grep -vF grep | awk ‘{print $2}’`; do
echo $i
jmap -histo:live $i > /dev/null
done
JConsole / Visual VM
java.io.tmpdir = /tmp
java.home = /usr/java/jdk1.6.0_21/jre
user.dir =
user.home =
user.name =
# 输出方式(Append)为覆盖方式
# DatePattern=’.’yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
# 1)’.’yyyy-MM: 每月
# 2)’.’yyyy-ww: 每周
# 3)’.’yyyy-MM-dd: 每天
# 4)’.’yyyy-MM-dd-a: 每天两次
# 5)’.’yyyy-MM-dd-HH: 每小时
# 6)’.’yyyy-MM-dd-HH-mm: 每分钟
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
javap 查看class文件的接口和实现方法。
jar xvf /home/hadoop/hive/lib/hive_contrib.jar
Mat、BTrace、YourKit Java Profiler
tcpdump
jmx
https://github.com/zhongl/jmxero/wiki/%E5%8F%AA%E7%94%A8%E4%BA%94%E5%88%86%E9%92%9F%E4%B8%BA%E7%B3%BB%E7%BB%9F%E5%AE%9E%E7%8E%B0%E5%9F%BA%E4%BA%8EJMX%E7%9A%84%E7%9B%91%E6%8E%A7
http://www.ibm.com/developerworks/cn/java/j-memoryanalyzer/index.html
编码:
深入分析 Java 中的中文编码问题
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
使用 Java 语言进行 Unicode 代理编程
http://www.ibm.com/developerworks/cn/java/j-unicode/index.html
http://www.ibm.com/developerworks/cn/java/jsp_dbcsz/index.html
jar -tf test.jar
在 test.jar 已经存在的情况下,可以查看 test.jar 中的内容
perftools查看堆外内存并解决hbase内存溢出
http://www.85java.com/thread-16703-1-1.html
http://download.oracle.com/javase/6/docs/jdk/api/attach/spec/index.html
http://kenwublog.com/java6-jvm-options-chinese-edition-published
http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm
http://rdc.taobao.com/team/jm/
http://kenwublog.com/hbase-performance-tuning
理解Heap Profling名词-Shallow和Retained Sizes:
http://kenwublog.com/understand-shallow-and-retained-size-in-hprofling