1. 7.18 对象怎么定位historical

    - Oracle JDK和OpenJDK用的都是直接指针,好处是速度块,坏处是垃圾回收如果移动存活对象那么需要修改指针

  2. 7.19 OOM问题举例historical

    1. 为什么会发生OOM 得从GC回收过程说起(参考垃圾回收.md),可以看出GC之回收GCRoot达不到的对象的,GCRoot引用的对象是强引用,是没办法被回收的。 如果jvm内存中都是强引用对象,那么FullGC后jvm内存剩余空间很有可能不足以存放将要创建的新的对象,就会发生OOM 1.1.

  3. 7.20 性能分析工具historical

    1. 自带工具 1.1. jps 用来查看进程信息 1.1.1. 查看本机java进程ID - 命令 - 结果 1.2. jinfo 用来查看设置的JVM信息 1.2.1. 打印运行中的程序的jvm参数 - 命令 - 结果 1.3. jstack 1.3.1. 打印Thread stack信息 -

  4. 7.21 JVM参数调优historical

    1. 调整哪些参数 1. 针对JVM堆的设置,一般可以通过-Xms -Xmx限定其最小、最大值,为了防止垃圾收集器在最小、最大之间收缩堆而产生额外的时间,通常把最大、最小设置为相同的值; 2. 年轻代和年老代将根据默认的比例(1:2)分配堆内存, 可以通过调整二者之间的比率NewRadio来调整二者

  5. 7.22 GC日志分析historical

    1. Parallel GC日志 1.1. 新生代日志 1.2. 老年代日志 2. 工具 2.1. gchisto jewes/gchisto: A garbage collection log visualisation tool\. Originally hosted at https://ja

  6. 8.OOPhistorical

    1. 创建子类对象时,父类对象会也被一起创建么 不会。 super关键词只不过是调用父类构造方法来初始化属性 2. 子类有没有继承父类的私有变量? 从继承的概念来说,private和final不被继承。Java官方文档上是这么说的。 从内存的角度来说,父类的一切都被继承(从父类构造方法被调用就知道了

  7. 9.Reflectionhistorical

    1. 什么是反射 运行时 - 动态的获取类的信息:如属性、方法等 - 动态的创建对象、对属性赋值、调用对象的方法 2. 使用 - Java 反射由浅入深 \ 进阶必备 \- 掘金 3. 原理 - javac编译.java文件为.class文件 - 类加载器加载.class文件到方法区中 - 创建该类

  8. 10.Sockethistorical

    1. 基础 Socket本质上就是IO,所以Socket的操作和IO基本类似。Socket的主题其实就是IO,NIO的主题 2. TCP 服务器通过ServerSocket监听在某个端口(NIO的ServerSocketChannel) 客户端通过Socket链接服务器(NIO的SocketChan

  9. 11.1 Servlethistorical

    生命周期 - 调用init方法初始化 仅调用一次,在第一次创建servlet时调用 - 调用service方法处理客户端请求 每次客户端请求都会调用这个方法,转而调用doGet,doPost。。。 - 调用destroy方法终止 只会被调用一次 - 垃圾回收 参考链接 - Servlet 生命周期

  10. 11.2 调优historical

    jvm调优 windows下为catalina.bat,在开头的位置加上jvm参数即可 观察参数是否设置成功 jps -l 获取PID jmap -heap PID查看结果 Coyote连接器调优 参数 说明 ------------- -------------------------------