剑指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. APP的宣传方式有哪些

    APP应用已经成为了互联网不可缺少的话题,事实上,开发一款移动APP的成本不是很高,但是怎样以最低的成本得到最大的推广效果,这是企业和开发者都很关心的一个问题.下面,我们来探讨一下这个问题. 1.一款 ...

  2. [LeetCode] Cherry Pickup 捡樱桃

    In a N x N grid representing a field of cherries, each cell is one of three possible integers. 0 mea ...

  3. 【java】doc转pdf

    市场上主流的 WORD 转 PDF 工具有两个:OpenOffice 和 Microsoft Office 转换插件,可以通过部署这两个工具实现 WORD 转 PDF 功能. 1: Microsoft ...

  4. 【Swift】swift中懒加载的写法

    swift中懒加载的写法,直接上例子 (懒加载一个遮罩视图) lazy var dummyView: UIView = { let v = UIView() v.backgroundColor = U ...

  5. python基础面试

     1  请用自己的算法, 按升序合并如下两个list, 并去除重复的元素: list1 = [2, 3, 8, 4, 9, 5, 6]list2 = [5, 6, 10, 17, 11, 2] 答案: ...

  6. HtmlUnit入门二

    由于在在WebClient中,默认支持对CSS,JavaScript的解析,因此会总是会出现很多错误信息,并且执行速度也很慢. 因此,我们可以选择关闭掉WebClient对CSS,JavaScript ...

  7. [测试题]line

    Description Input Output Sample Input 10 49743636 36679 707182 9310618 9814768 2315242 9916077 35233 ...

  8. 【SPOJ839】Optimal Marks 网络流

    You are given an undirected graph G(V, E). Each vertex has a mark which is an integer from the range ...

  9. TensorFlow-Bitcoin-Robot:Tensorflow 比特币交易机器人

    简介 一个比特币交易机器人基于 Tensorflow LSTM 模型,仅供娱乐. A Bitcoin trade robot based on Tensorflow LSTM model.Just f ...

  10. Linux 查看系统硬件信息汇总 (部份实例详解Centoso为例)

    1.cpu #lscpu命令,查看的是cpu的统计信息.(部分旧版本不支持) Disk /dev/sda: bytes heads, sectors/track, cylinders Units = ...