剑指Offer——知识点储备-故障检测、性能调优与Java类加载机制

故障检测、性能调优

用什么工具可以查出内存泄露

  • (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消耗;
  • (2)EclipseMAT:是一款开源的java内存分析软件,查找内存泄漏,能容易找到大块内存并验证谁在一直占用它,它是基于Eclipse RCP,可以下载RCP的独立版本或者Eclipse的插件;
  • (3)JProbe:分析java的内存泄漏;

类加载机制

JVM加载类的过程,双亲委派模型中有哪些方法?有没有可能父类加载器和子类加载器加载同一个类?如果加载同一个类,该使用那哪一个类?

JVM如何加载一个类的过程

1.加载:查找和导入class文件;

2.连接:

- (1)检查:检查载入的class文件数据正确性;

- (2)准备:为类的静态变量分配存储空间;

- (3)解析:将符号引用转换成直接引用(可选)

3.初始化:初始化静态变量,静态代码块。

4.使用

5.卸载

双亲委派图



  双亲委派概念:

  如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委托给父类加载器去完成,每一层次的加载器都是如此。因此所有的类加载请求都会传给顶层的启动类加载器,只有当父加载器反馈自己无法完成该加载请求(该加载器的搜索范围中没有找到对应的类)时,子加载器才会尝试自己去加载

  加载器

  • (1)启动类加载器:是用本地代码实现的类装入器,它负责将/lib下面的类库加载加载到内存中{比如:rt.jar}.由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作.
  • (2)扩展类加载器
  • (3)应用程序类加载器

双亲委派模型中有哪些方法有没有可能父类加载器和子类加载器加载同一个类?

   不可能父类和子类同时加载一个类。一个类的加载先由它的父类进行加载,若父类(递归向上)加载不了,则由子类加载。

  加载的过程:见jvm232页。

  • (1)通过findLoadedClass(),查看请求的类是否被加载过;
  • (2)若没有加载,则调用父类加载器的loadClass()方法进行加载;
  • (3)若父类加载器加载为空则用启动类加载器作为父类加载器;
  • (4)如果父类加载失败,则抛出异常;
  • (5)然后再调用自己的findClass()方法进行加载;
  • (6)最后判断该类是否进行解析resolveClass();

其中用到的方法有:

1、loadClass()

2、findLoadedClass()

3、findbootstrapClassOrNull()

4、findClass()

5、resolveClass()

Student s=new Student();在内存中做了哪些事情

  • (1)加载Student class文件进内存;
  • (2)在栈内存为s开辟空间;
  • (3)在堆内存为学生对象开辟空间;
  • (4)对学生对象的成员变量进行默认初始化;
  • (5)对学生对象的成员变量进行显示初始化;
  • (6)通过构造方法对学生的成员变量赋值;
  • (7)学生对象初始化完毕,把对象地址赋值给s变量;




剑指Offer——知识点储备-故障检测、性能调优与Java类加载机制的更多相关文章

  1. 故障检测、性能调优与Java类加载机制

    故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消 ...

  2. 剑指Offer——知识点储备-J2EE基础

    剑指Offer--知识点储备-J2EE基础 9.2 jdk 1.8的新特性(核心是Lambda 表达式) 参考链接:http://www.bubuko.com/infodetail-690646.ht ...

  3. 剑指Offer——知识点储备-操作系统基础

    剑指Offer--知识点储备-操作系统基础 操作系统 操作系统什么情况下会出现死锁? 产生死锁的必要条件 (1)互斥条件:即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有, ...

  4. 剑指Offer——知识点储备-数据库基础

    剑指Offer--知识点储备-数据库基础 数据库 事务 事务的四个特性(ACID):   原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Dura ...

  5. 剑指Offer——知识点储备-JVM基础

    剑指Offer--知识点储备-JVM基础 1.java内存与内存溢出 1.1 JVM分为哪些区,每一个区干嘛的?(见java虚拟机38页) (1)程序计数器(线程私有) 当前线程执行字节码的信号指示器 ...

  6. 剑指Offer——知识点储备-Java基础

    剑指Offer--知识点储备-Java基础 网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&pa ...

  7. 剑指Offer——知识点储备--Linux基本命令+Makefile

    剑指Offer--知识点储备–Linux基本命令 1.linux下查看进程占用cpu的情况(top): 格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 主要参 ...

  8. 剑指Offer——知识点储备-常用算法

    剑指Offer--知识点储备-常用算法 快速排序 注:若排序是有序的,采用快排,则退化为冒泡排序. 解决这个问题,采用两个选取基准的方法 (1)随机选取基数(在这个区间内随机取一个数) 出现的恶劣情况 ...

  9. 剑指Offer——知识点储备-设计模式

    剑指Offer--知识点储备-设计模式 设计模式 设计模式的六大原则 (1)单一职责原则(有且仅有一个原因引起类的变化): (2)里氏替换(任何父类出现的地方子类都可以替换): (3)依赖倒置(依赖抽 ...

随机推荐

  1. XML 解析默认去掉命名空间和注释

    //创建xml文档 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(@"C:\Users\Tony\Downloads\统一标准报文格 ...

  2. [POI 2004]SZP

    Description Byteotian 中央情报局 (BIA) 雇佣了许多特工. 他们每个人的工作就是监视另一名特工.Byteasar 国王需要进行一次秘密行动,所以他要挑选尽量多的信得过的特工. ...

  3. [HNOI2009]有趣的数列

    题目描述 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<...<a2n ...

  4. 【USACO】AC自动机

    Description 对,这就是裸的AC自动机. 要求:在规定时间内统计出模版字符串在文本中出现的次数. Input 第一行:模版字符串的个数N. 第2->N+1行:N个字符串.(每个模版字符 ...

  5. 【bzoj4570 scoi2016】妖怪

    题目描述 邱老师是妖怪爱好者,他有n只妖怪,每只妖怪有攻击力atk和防御力dnf两种属性.邱老师立志成为妖怪大师,于是他从真新镇出发,踏上未知的旅途,见识不同的风景. 环境对妖怪的战斗力有很大影响,在 ...

  6. SPOJ COT(树上的点权第k大)

    Count on a tree Time Limit: 129MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submi ...

  7. bzoj4361isn dp+容斥

    4361: isn Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 370  Solved: 182[Submit][Status][Discuss] ...

  8. SpringCloud学习之快速搭建分布式配置

    一. 关于spring-cloud中的分布式配置 Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持.使用Config Server,您可以在所有环境中管理应用程序的 ...

  9. Python中模块之shutil及zipfile&tarfile的功能介绍

    shutil的功能介绍及其他打包.压缩模块 1. shutil模块的方法 chown 更改指定路径的属组 2. copy 拷贝文件和权限 方法:shutil.copy(src,dst,*,follow ...

  10. AspNetCoreApi 跨域处理

    AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题:  浏览器安全限制了前端脚本跨站点的访问资源,所以在调用WebApi 接口时不能成功 ...