GC和JVM调优实战

4 篇文章 0 订阅
1 篇文章 0 订阅

阅读全文请点击

目录


  1. JVM简介

  2. JVM结构
    2.1 方法区

     2.1.1 常量池
     2.1.1.1 Class文件中的常量池
     2.1.1.2 运行时常量池
     2.1.1.3 常量池的好处
     2.1.1.4 基本类型的包装类和常量池

    2.2 堆
    2.3 Java栈

     2.3.1 栈帧
     2.3.1.1 局部变量区
     2.3.1.2 操作数栈
     2.3.1.3 栈数据区

    2.4 本地方法栈
    2.5 PC寄存器
    2.6 堆与栈

     2.6.1 堆与栈里存什么
     2.6.2 堆内存与栈内存的区别
  3. JIT编译器

  4. 类加载机制
    4.1 类加载的时机
    4.2 类加载过程

  5. 垃圾回收
    5.1 按代实现垃圾回收
    5.2 怎样判断对象是否已经死亡
    5.3 java中的引用
    5.4 finalize方法什么作用
    5.5 垃圾收集算法
    5.6 Hotspot实现垃圾回收细节
    5.7 垃圾收集器

     5.7.1 Serial收集器
     5.7.2 ParNew收集器
     5.7.3 Parallel Scavenge收集器
     5.7.4 Serial Old收集器
     5.7.5 Parallel Old收集器
     5.7.6 CMS收集器
     5.7.7 G1收集器
  6. JVM参数
    6.1 典型配置

     6.1.1 堆大小设置
     6.1.2 回收器选择
     6.1.3 辅助信息

    6.2 参数详细说明

  7. JVM性能调优
    7.1 堆设置调优
    7.2 GC策略调优
    7.3 JIT调优
    7.4 JVM线程调优
    7.5 典型案例

  8. 常见问题
    8.1 内存泄漏及解决方法
    8.2 年老代堆空间被占满
    8.3 持久代被占满
    8.4 堆栈溢出
    8.5 线程堆栈满
    8.6 系统内存被占满


1.JVM简介

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。

java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

运行过程

Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行。

C++以及Fortran这类编译型语言都会通过一个静态的编译器将程序编译成CPU相关的二进制代码。

PHP以及Perl这列语言则是解释型语言,只需要安装正确的解释器,它们就能运行在任何CPU之上。当程序被执行的时候,程序代码会被逐行解释并执行。


  1. 编译型语言的优缺点:

  • 速度快:因为在编译的时候它们能够获取到更多的有关程序结构的信息,从而有机会对它们进行优化。

  • 适用性差:它们编译得到的二进制代码往往是CPU相关的,在需要适配多种CPU时,可能需要编译多次。

解释型语言的优缺点:

  • 适应性强:只需要安装正确的解释器,程序在任何CPU上都能够被运行

  • 速度慢:因为程序需要被逐行翻译,导致速度变慢。同时因为缺乏编译这一过程,执行代码不能通过编译器进行优化。

Java的做法是找到编译型语言和解释性语言的一个中间点:

  • Java代码会被编译:被编译成Java字节码,而不是针对某种CPU的二进制代码。

  • Java代码会被解释:Java字节码需要被java程序解释执行,此时,Java字节码被翻译成CPU相关的二进制代码。

  • JIT编译器的作用:在程序运行期间,将Java字节码编译成平台相关的二进制代码。正因为此编译行为发生在程序运行期间,所以该编译器被称为Just-In-Time编译器。

阅读全文请点击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值