随笔分类 -  实战JAVA虚拟机 JVM故障诊断与性能优化-读书笔记

实战JAVA虚拟机 JVM故障诊断与性能优化(十)---字节码的执行
摘要:字节码执行是java虚拟机的重点,就如同汇编语言对于计算机一样重要,字节码对于java虚拟机来说是执行的根本。 执行的基础:Java虚拟机常用指令介绍 常用入栈指令:将常数压入操作数栈,根据数据类型和入栈内容不同,又可以分为const系列、push系列、ldc系列 bipush (8位),sipus 阅读全文

posted @ 2017-11-14 19:57 Xiaox-xin 阅读(219) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(九)---掌握ClassLoader
摘要:ClassLoader在Java中有着非常重要的作用,它主要工作在Class装载的加载阶段,其主要作用是从系统的外部获取Class二进制数据流。 1、认识ClassLoader ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载。因此,ClassLoad 阅读全文

posted @ 2017-11-14 16:30 Xiaox-xin 阅读(263) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(九)---Class装载系统
摘要:Class文件的装载流程 只有被Java虚拟机装载的Class类型才能在程序中使用。 Class文件装载过程: 类装载的条件 Class只有在必须使用的时候才会被装载,Java虚拟机不会无条件地装载Class类型。Java虚拟机规定,一个类或接口在初次使用前,必须要进行初始化。“使用”指主动使用。 阅读全文

posted @ 2017-11-14 00:00 Xiaox-xin 阅读(186) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(九)---Class文件结构
摘要:对于java虚拟机来说,Class文件是虚拟机的一个重要接口,无论使用何种语言开发,只要能编译为正确的Class文件,那么这种语言就可以在java虚拟机上执行,Class文件就是Java虚拟机的基石, 1、Class文件总体结构 java虚拟机规范的定义,一个Class文件可以非常严谨地被描述称: 阅读全文

posted @ 2017-11-09 00:38 Xiaox-xin 阅读(211) 评论(0) 推荐(0) 编辑

'实战JAVA虚拟机 JVM故障诊断与性能优化(八)---无锁,CAS理解
摘要:在高并发环境下,对”锁“的激烈竞争可能会成为系统瓶颈,为此,可以使用一种称为非阻塞同步的方式。这种方式不需要使用”锁“(因此称之为“无锁”),但是依然能确保数据和程序在高并发环境下 保持多线程间的一致性。 1、理解CAS 基于比较并交换(Compare And Swap)CAS算法的无锁并发控制。 阅读全文

posted @ 2017-11-06 00:31 Xiaox-xin 阅读(162) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(八)
摘要:锁与并发 Java虚拟机对多线程开发有着很好的支持,其中,一个重要的因素就是对“锁”的实现和优化。 锁时多线程软件开发的必要条件之一,它的基本作用就是保护临界区资源不会被多个线程同时访问而受到破坏,通过锁,可以让多个线程排队,一个一个地进入临界区访问目标对象,使目标对象的状态总是保持一致,这也就是锁 阅读全文

posted @ 2017-09-18 20:39 Xiaox-xin 阅读(227) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(七)
摘要:分析Java堆 1.对症下药:找到内存溢出的原因 内存溢出(OutofMemory,简称OOM),主要讨论最常见的集中内存溢出问题,包括堆溢出、直接内存溢出、永久区溢出等。 堆溢出 当对象大小之和大于由Xmx参数指定的堆空间大小时,会造成溢出。 直接内存溢出 在java的NIO(new IO)中,支 阅读全文

posted @ 2017-09-13 19:29 Xiaox-xin 阅读(195) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(六)--->JConsole And Visual VM
摘要:JConsole console是JDK自带的监控工具。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗,不失为一款好工具。 目录:${JAVA_HMOE}\bin\ 阅读全文

posted @ 2017-09-13 15:36 Xiaox-xin 阅读(185) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(六)
摘要:性能监控工具 Linux下的性能监控工具 1.top 2.vmstat > 监控内存和CPU 3.iostat > 监控IO使用 4.pidstat Windows下的性能监控工具 1.任务管理器 2.permon性能监控工具 运行 >perfmon JDK性能监控工具 1.jps > 查看Java 阅读全文

posted @ 2017-09-13 15:34 Xiaox-xin 阅读(323) 评论(0) 推荐(0) 编辑

jdk 1.8 VisualVM 插件 地址 变更
摘要:打开Java VisualVM检查更新插件时,默认的连接连不上,通过浏览器访问之后发现默认的服务器已经404,新地址已经迁移到github,下面这个地址里面有不同版本jdk对应的插件中心地址。 https://visualvm.github.io/pluginscenters.html 参考:htt 阅读全文

posted @ 2017-09-11 23:54 Xiaox-xin 阅读(220) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(七)--->无处不在的字符串:String在虚拟机中的实现
摘要:String类型虽然不是基本类型,但是也享有了和基本数据类型一样的待遇。 1.String对象的特点: a.不变性 指String对象一旦生成,则不能再对它进行改变,由于不变性,一些看起来像是修改的操作,实际上都是依靠产生新的字符串实现的,比如,String.substring()、String.c 阅读全文

posted @ 2017-09-07 18:55 Xiaox-xin 阅读(160) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(五)---->常用的GC参数
摘要: 阅读全文

posted @ 2017-08-17 20:20 Xiaox-xin 阅读(130) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(五)---->G1回收器
摘要:G1回收器(Garbage First Garbage Collector) G1回收器拥有独特的垃圾回收器,和之前提到的回收器截然不同。从分代上看,G1依然属于分代垃圾回收器,它会区分年轻代和老年代,依然有edan区和survivor区,但从堆的结构上看,它并不要求整个eden区、年轻代或者老年代 阅读全文

posted @ 2017-08-15 10:10 Xiaox-xin 阅读(210) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(五)
摘要:垃圾回收器和内存分配 垃圾回收器可不仅仅只有一种,什么情况下使用哪一种,对性能又有什么影响,我们应该了解。 一:串行回收器 1、新生代串行回收器 最古老,最基本的垃圾回收器一种。 特点: 1、它仅仅使用单线程进行垃圾回收。 2、它是独占式的垃圾回收。 在串行回收器运行时,应用程序中的所有线程都停止工 阅读全文

posted @ 2017-08-11 15:27 Xiaox-xin 阅读(194) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(四)
摘要:垃圾回收概念与算法 常用的垃圾回收算法:引用计数法,标记压缩法,标记清除法,复制算法和分代,分区的思想。 1.引用计数法: 最为古老的一种垃圾收集方法,引用计数器的实现很简单,对一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,计数器减1。 存在的两个严重问题: (1): 阅读全文

posted @ 2017-08-03 21:04 Xiaox-xin 阅读(160) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(三)
摘要:常用java虚拟机参数 一切运行都有迹可循,掌握跟踪调试参数 1.跟踪垃圾回收--读懂虚拟机日志 -XX:+PrintGC 打印gc日志 -XX:+PrintGCDetails 虚拟机在退出时打印堆的详细信息 eg: Heap PSYoungGen total 512K, used 0K [0x00 阅读全文

posted @ 2017-08-02 10:05 Xiaox-xin 阅读(229) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(二)
摘要:认识java虚拟机的基本结构 java虚拟机基本结构: 类加载子系统:负责从文件系统或网络中加载class信息,加载的类信息存放于一块称为方法区的内存空间。除类信息外,方法区中可能还会存放运行时常量池信息,包括字符串常量和数字常量 java堆:虚拟机启动时建立,它是java程序最主要的内存工作区域, 阅读全文

posted @ 2017-08-01 10:37 Xiaox-xin 阅读(314) 评论(0) 推荐(0) 编辑

实战JAVA虚拟机 JVM故障诊断与性能优化(一)
摘要:虚拟机分类: 1.系统虚拟机:Visual Box,VMware 2.程序虚拟机:java虚拟机(如:Hotspot,IBM->J9等) java虚拟机跨平台的原因: java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的java字节码也未必由java语言编译而成,像Gr 阅读全文

posted @ 2017-07-31 21:04 Xiaox-xin 阅读(354) 评论(0) 推荐(0) 编辑

导航