jps
 -q 仅输出vm标识
 -v jvm参数
 -m main方法参数
 -l 完整包名
 javac -g 编译
 javap -c -v -p -s -lmat jprofiler
 可触及,可复活,不可触及
 String 是bootstrapclassloader 加载
 mark-sweep 标记清除
 mark-compact 标记压缩
 RunTime.getRunTime.gc
 System.gc调用的上边的方法
 bump the pointer 指针碰撞
 g1 垃圾回收期 分regioniconst -1~5
 bipush -128~127
 sipush 两字节
 在finally改变return的值
 如果是引用类型会生效,如果是基本类型无作用
 try块里return时已经把要返回的压栈。jstat -gc pid
 jstack pid 查看死锁
 jinfo -flag 参数 pid
 -XX:PrintFlagInitial
 -XX:PrintFlagFinal
 -XX:PrintGcTimeStamps
 jinfo -flags pid
 jmap -heap pid
 jstat -class pid
 jmap -heap pid > a.txt
 jmap -histo pid
 jstat -class pid
 jmap -dump:format=b,file=/a
 -XX:HeapDumpPath=/dd
 Thread.getAllStackTraces()
 a=“a”+“b”
 b= “ab”
 a==b true 编译器就确定
 newInstance()只能调用空参构造器,且必须是public
 push入操作数栈
 store 载入到本地变量表
 load本地变量表到操作数栈
 new 压栈this
 dup 复制栈顶this
 invokespecial 弹出一个this
 string 的 + 字符拼接调用的是 stringBuilder 的append方法
 final修饰的拼接编译器优化,不调用。5.0之后才有
 toString生成的不进常量池
 代码中双引号出现的字符串会在常量池
 String s1 = new String(“a”)+new String(“b”)
 s1.intern
 jdk7执行后 常量池中没创建对象,创建了一个指向堆中此对象的指针
 String s2 = “'ab”;
 s1==s2 jdk7+
 s1!=s2 jdk6-
 非”“生成的字符串不在常量池,调用intern后查询常量池,如果包含则返回常量池地址,不包含则新建再返回新建的地址。
 ByteBuffer.allocateDirec()
 对象包含对象头,实例数据和padding
 对象头包含hashcode,分代年龄,锁状态,klass指针
 JIT just in time compilernew RandomAccessFile(file,“rw”)独写 (file,“r”)只读
 Integer.toHexString toOctalString toBinaryString
 Integer.value(“FF”,16).toString (“77”,8) (“10”,2)
 subString(begin,offset) 从begin开始,到offset-1
 insert into table values ()
 delete table where a =1
 select a,b from table where a =1
 update table a=1,b=2 where a =3
 update table a=1 and b=2 where a=3(错误,会把a=3的改成a=0,b不变)
 create table; drop table; alter table ; create database;drop database;
 & 与 | 或 ~ 非 ^异或
 << 左移 short byte 左移转为int >>右移 >>>无符号右移
 Map map = new HashMap<>();
 Set set = map.entrySet();
 Iterator it = set.iterator();
 Map.Entry enter = it.next();
 enter.getKey(); enter.getValue();
 Calendar.getInstance().getTimeMillis()
 c = Calendar.getInstance()
 c.get(c,year)
 new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”)
 Date d = s.parse(String)
 InputStream
 int available()可读字节
 void close()
 int read() 返回读到字符的整形编码 ascii
 int read(byte[] buffer)读取buffer.length字节,如结尾,返回-1
 ByteArrayInputStream(byte[] buffer) (byte[] buf ,offset,len)
 ByteArrayOutputStream toByteArray();
 System.in System.out
 BufferReader br = new BufferReader(new InputStreamReader(System.in))
 br.readLine()
 getProperties()虚拟机当前环境
 Properties是HashTable的子类Random r = new Random()
 r.next()System.currentTimeMillis();
 long startTime = new Date().getTime();
 public static native void arrayCopy(Object src,int srcPos,Object dest,int destPos,int length)
 getSession(false)不存在返回null
 getSession()相当于getSession(true);不存在则新建一个并返回
 线程状态
 new terminated run waiting timed-waiting blocked
 JSONObject o =new JSONObject();
 o.put(k,v)
 o.toString();
 User user = new User
 Map map = new HashMap()
 JSON.toJSON(map)
 JSON.toJSON(user)
 List list;
 JSON.parseArray(list)
 JSON.parseString(string)
 getContextClassLoader
 getSystemClassLoader永久代是hotspot对方法区 实现其他虚拟机没有永久代,在1.8中,元空间取代了永久代,永久代在堆中,元空间在本地内存中。
 常量池从1开始编号,0特殊意义,表示无指向无引用
 I int B byte S short J long D double Z boolean C char F float
 L 引用类型 [数组 V void
 老年代满了出发fgc
 新生代 复制算法 老年代 标记压缩算法
 栈中引用出栈后没有立即回收垃圾,gc的时候才会回收
 -XX:+PrintGcDetails
 RunTime r = RunTime.getRunTime()
 r.totalMemory
 r.getProcessor()
 minor 小版本 major大版本
 调优目标,减少fgc
 minorgc=ygc majorgc = fgc
 stw stop the world
 cms concurrent nark sweep 并发标记清除
 -标准参数
 -X 非标准参数
 -XX 实验参数
 -Xmn 新生代大小 -Xms 初始堆大小 -Xmx 最大堆大小 建议两者相同,防止内存抖动
 线程栈包含 栈帧,本地方法栈,程序计数器
 栈帧包含 本地变量表,操作数栈,动态链接,返回地址,附加信息
 TLAB thread local allocated buffer
 Callable call = new Callable<>(){
 @Override
 public Integer call(){
 return 1;
 }
 }
 FutureTask task = new FutureTask<>(call)
 Thread t = new Thread(Task)
 Integer i = task.get()BlockingQuene
 add ,remove 抛异常
 put , take 阻塞
 offer,poll 返回true

或false

静态代码先执行,静态代码块和属性按从上到下的顺序执行。
clinit只执行一次
非静态代码块和实例属性按顺序执行,
init new一次执行一次
最后执行constructor 构造方法

先父后子

%d 输出日志时间点的日期(一般是那一天),也可以在其后用大括号自定义格式,比如:%d{yyyy MMM dd HH:mm:ss:SSS},输出类似:2014 11 05 :23:28 :22
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL ;
%r 输出自应用启动到输出该log信息耗费的毫秒数 ;
%c 输出所属的全类名,也可以只输出类名,:%c{1} ;
%t 输出产生该日志的当前线程名字 ;
%m 输出代码中自定义的的信息;
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” ;

%l 输出日志发生的代码行位置,在代码中的行数;
每一个百分号后的字母就是具体单词的首字符;比如:c->class t->thread等等