12.初识 jvm
1.jvm:java的虚拟机,运行于操作系统之上,不直接接触硬件。
2.jvm图解:
3.双亲委派机制:可以防止java代码遭受恶意破环,也就是会先加载父类的方法,而父类不存在时候才会调用自身的。比如,自己定义一个java.Lang.String的时候就会出错,因为string类已经存在的了。
4.native interface本地接口(native也是java的关键字)
java语言不能对操作系统进行访问和操作,但是可以调用其他TNI接口来实现。
5.pc寄存器
也就是每个线程所私有的程序计数器,也就是指向下一条指令的
6.main方法是放在栈中,其他的一般方法也是
7.方法区:是程序共享的,保存的都是可以共享的信息,比如常量,静态变量
8.栈区:存局部变量,定义的参数,比如int,char之类的,以及调用现场存在栈区,在函数结束时,系统会自动收回存储单元。
9.堆区:放置new出来的对象或引用,(又分为新生区,养老区)
10.堆的调优
-xms:初始化分配大小,默认为电脑内存的1/64;
-xmx:最大的内存,默认为电脑内存的1/4;
-xx~~~:输出详细的GC处理日志
11.oom异常
这就是堆内存溢出异常,比如不停的给string添加字符串,就会不停的创造新的对象,就会导致堆内存溢出。
12.MAT:一种查看堆内存溢出的插件,分析dump文件。
你的日积月累迟早会成为别人的望尘莫及。