1.说在前面的话简单介绍。
--------------------------------1---------------------------
--------------------------------2---------------------------
jdk jre jvm
字节码.class运行在jvm中。
java程序设计语言 java的API类库 java虚拟机
-----------------------3------------------------------------
模拟溢出:
在方法里面,对象放在堆中。
如何设置溢出范围和堆快照:
-XX:+HeapDumpOnOutOfMemoryError -Xms20m程序初始化的时候 -Xmx20m程序运行的时候
什么是Xms和Xmx:https://blog.csdn.net/qq_20864311/article/details/81319310
查找快照:
IDEA安装Jprofiler:https://blog.csdn.net/wytocsdn/article/details/79258247
-----------------------4-------------------------------------
如何查找mac的JDK:https://www.jianshu.com/p/075993dfd8db
数据jconsole指令即可查看的。
列出了本地的所有的java 进程。
用这个命令列出所有的java进程
jps
双击这个
看到这个画面
写代码监控我们的程序。
写一个例子JconsoleTest
对:新生代 老年代
新生代:
有对象new的话就放在Eden中,GC垃圾回收垃圾就被清除,存活就放在存活区域里面。多次存活就放在持久代中。
package jconsole;
import java.util.ArrayList;
import java.util.List;
public class JconsoleTest {
//声名一个128字节的数组成员变量是放在堆里面的
public byte[] b1 = new byte[128*1024];
public static void main(String[] args) {
try {
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
}
fill(1000);
System.out.println("开始fill");
}
public static void fill(int num){
List<JconsoleTest> list = new ArrayList<JconsoleTest>();
for(int i=0;i<num;i++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
list.add(new JconsoleTest());
}
}
}
观察jconsole的变化 堆区域 Eden区域 survivor区域
修改byte为
为什么这么写?https://www.cnblogs.com/libin6505/p/11226940.html
堆不是增加了而是增加减少 增加减少堆里的被回收了
--------5------------图形化工具-------------------
--------6----------杂谈----
-------7-----8-------java发展史----
-----9----java技术体系------
lambda表达式和函数式编程。
-------10-------java8新特性-----
解决匿名内部类的问题
简化匿名内部类:
------11-------lambda表达式---
-----12--虚拟机的种类----classic VM---------
------13------------Exact VM-------------
热点代码探测技术。后面会讲。
-------14------HotSpot VM-------------
嵌入式虚拟机
------------15--------KVM---------
-------16------JRockit----------
IBM:
--------17----J9-----------
不能执行.class文件
------18--------------Dalvik------
-----19----------Microsoft VM-----------
--------20----------自己就是一个小的操作系统--------