常用命令归纳:Linux/Oracle/JVM/Git

经常用到一些命令,还总是忘掉的,就简单列在这里。总是现查也挺麻烦的。

Linux:

  • top mem consumer: sudo ps -aux | sort -k4nr | head -5 or top, then press M
  • connection number: netstat -an | grep ESTABLISHED | wc –l
  • process number: ps -ef | wc -l
  • threads of a process: ps uH p <pid> | wc -l
  • .tar: tar -xvf archive.ta

[……]阅读全文

使用堆外内存

有时候对内存进行大对象的读写,会引起 JVM 长时间的停顿,有时候则是希望最大程度地提高 JVM 的效率,我们需要自己来管理内存(看起来很像是 Java 像 C++祖宗的妥协吧)。据我所知,很多缓存框架都会使用它,比如我以前使用过的 EhCache(给它包装了个酷一点的名字,叫 BigMemory),以及现在项目中的 Memcached。在 nio 以前,是没有光明正大的做法的,有一个 work around 的办法是直接访问 Unsafe 类。如果你使用 Eclipse,默认是不允许访问 sun.misc 下面的类的,你需要稍微修改一下,给 Type Access Rules 里面添加一条所有类都可以访问的规则:

config

在使用 Uns

[……]阅读全文

JVM 致命错误日志(hs_err_pid.log)解读

java 致命错误出现的时候,JVM 生成了 hs_err_pid<pid>.log 这样的文件,其中往往包含了虚拟机崩溃原因的重要信息。因为经常遇到,在这篇文章里,我挑选了一个,并且逐段分析它包含的内容(文件可以在文章最后下载)。默认情况下文件是创建在工作目录下的(如果没权限创建的话 JVM 会尝试把文件写到/tmp 这样的临时目录下面去),当然,文件格式和路径也可以通过参数指定,比如:

java -XX:ErrorFile=/var/log/java/java_error%p.log

这个文件将包括:

  • 触发致命错误的操作异常或者信号;
  • 版本和配置信息;
  • 触发致命异常的线程详细信

[……]阅读全文

back to top