VIP--容易忘记的,自己亲自整理和测试 by qianbing
1. 逃逸分析(jdk 1.7以后默认开启逃逸分析)
关闭逃逸分析 -----VM运行参数:-Xmx4G -Xms4G -XX:-DoEscapeAnalysis -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError
开启逃逸分析 -----VM运行参数:-Xmx4G -Xms4G -XX:+DoEscapeAnalysis -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError
2. JVM定位问题根据
查看线程 jps
分析进程 jmap -histo + 进程号
内存 jmap
线程 jstack
JVM GC日志分析
LINUX常用性能分析工具使用及分析
top(cpu) free(内存) df(磁盘) dstat(网络流量) pstack、vmstat、strace(底层系统调用)
3. 偏向锁(默认开启)
开启偏向锁:-XX:+UseBiasedLocking -XX:BiasedLockingStartupDelay=0
关闭偏向锁:-XX:-UseBiasedLocking
4. Unsafe魔术类
--内存屏障 fullFence() loadFence() writeFence()
--阻塞队列 park() unPark()
--synchronized不能跨方法实现原子一致性,如何实现呢? monitor指令
unsafe.monitorEnter(Object var1)
unsafe.monitorExit(Object var1)
5. transient
transient关键字表示属性不参与序列化
6. Exclusive 独占的,专有的
Exclude 把…排斥在外; 排除
7. 删除文件命令脚本
DEL /F /A /Q \\?\%1
RD /S /Q \\?\%1
8. System.nanoTime() 使用
ns(nanosecond):纳秒, 时间单位。一秒的10亿分之一,即等于10的负9次方秒。常用作 内存读写速度的单位。
1纳秒=0.000001 毫秒
1纳秒=0.00000 0001秒
java的System.currentTimeMillis()和System.nanoTime()区别:
java中System.nanoTime()返回的是纳秒,nanoTime而返回的可能是任意时间,甚至可能是负数……
java中System.currentTimeMillis()返回的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数.
9. 如何查看一个java文件的子类,如 HandlerExceptionResolver。
第一步: ctrl + alt + shift + U
第二步: ctrl + T
第三步: ctrl + A
第四步: 回车