zoukankan      html  css  js  c++  java
  • 《Java虚拟机JVM故障诊断与性能优化》读书笔记(未完待续)

    前言:

      对于JVM学习用处的理解:我们程序员写的代码,虽说是放在服务器(linux)系统上的。但是很多时候,受JVM的影响,其实程序并没有发挥出服务器的最大性能。这时候,JVM就成为了瓶颈了。有瓶颈就要想办法优化解决,这和程序内部的优化一样。区别是,程序的优化一版是重构代码,而JVM的优化,往往是通过修改配置参数。

    1.虚拟机基本结构:

      1)方法区(永久区、元空间):类加载子系统(加载class信息)、常量

      2)java堆:java对象实例(所有线程共享)。【存数据】

      3)直接内存:NIO库允许使用系统的内存空间(不受Xmx指定的最大堆大小)

      4)垃圾回收系统:GC

      5)java栈:局部变量、方法参数,在线程创建时创建,每个线程一个。【存方法、线程相关的数据】

        5.1)通过-Xss指定最大栈空间

        5.2)是先入后出的堆栈结构

        5.3)超过请求的栈的深度,会抛出StackOverflowError的栈溢出错误

      6)本地方法栈:与java栈类似,不同的是一个调用JAVA方法,一个调用本地方法(一般由C语言写)

      7)PC寄存器:每个线程的私有空间,如果是JAVA方法,则会记录当前指令。如果是本地方法则是undifined。

       8)执行引擎:负责执行字节码。(现代虚拟机为了提高效率,会使用即时编译技术,编译成机器码后执行)

     2.对象去哪儿:Java堆辨清

      1)java堆,分新生代(eden、s0、s1),老年代。

      2)大部分情况,对象首先在eden区,然后一次新生代GC后,会进入s0或s1。之后,每次新生代GC后,它的年龄加一。达到一定条件后,被认为是老年代对象,进入老年代

     

  • 相关阅读:
    HDU 3911 Black And White 分段树 题解
    Haskell 差点儿无痛苦上手指南
    CFileDialog的使用方法简单介绍
    对 dpif_class 结构体的一点认识
    三层架构之基础知识
    五类常见算法小记 (递归与分治,动态规划,贪心,回溯,分支界限法)
    AlertDialog具体解释
    delphi tcp/ip IdTCPServer1实例一
    23种设计模式(15):备忘录模式
    Android APK反编译具体解释(附图)
  • 原文地址:https://www.cnblogs.com/xujanus/p/11539836.html
Copyright © 2011-2022 走看看