
JVM高级特性与最佳实战
select you from me
万年太久,只争朝夕
展开
-
JVM高级特性与最佳实战(一)————JAVA内存区域
引言java虚拟机在执行的过程中会把他所管理的内存划分为若干个不同的数据区域。一是方便管理,二是方便回收,针对不同区域的数据进行不同算法的垃圾处理机制。程序计数器概念程序计数器是一块较小的内存空间,它可以看成是当前线程执行的字节码的行号指示器。字节码解释器在工作的时候就要通过改变这个计数器的值来选取下一条需要执行的字节码指令。比如分支,循环,跳转,线程处理乱七八糟的。简单来说,程序计数...原创 2019-08-15 17:04:39 · 571 阅读 · 0 评论 -
JVM高级特性与最佳实战(二)————对象的创建过程,内存布局,访问定位
引言推荐阅读:JVM高级特性与最佳实战(一)————JAVA内存区域今天我们来继续讲解使用new关键字以后,在虚拟机中究竟是怎么创建对象的,以及分析对象的内存布局和访问定位。对象的创建过程类加载检查当虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载,解析和初始化过。如果没有必须先执行相应的类加载过程。...原创 2019-08-16 09:38:18 · 668 阅读 · 0 评论 -
JVM高级特性与最佳实战(三)————如何判断对象已死?
引言推荐阅读:JVM高级特性与最佳实战(一)————JAVA内存区域JVM高级特性与最佳实战(二)————对象的创建过程,内存布局,访问定位JVM中字符串常量池的详细剖析在java的垃圾回收算法中,最重要的莫过于如何判断对象已经死亡,那么我们究竟有几种方式判断对象已死呢?同时,在对象的访问定位中,提到了引用,那么引用只有一种方式么?接下来我们来探究一下。对象已死?在堆里边存放着Jav...原创 2019-08-16 17:40:43 · 1962 阅读 · 0 评论 -
JVM高级特性与最佳实战(五)————Java内存模型
引言本来想着给大家介绍下JVM虚拟机类的加载过程来着,实在是抽象,不好组织语言,甚至好多都不想看了。所以我们从Java的内存模型讲起来,然后分析下高效并发的问题和解决方案。由来Java虚拟机规范中试图定义一种Java内存模型(JMM)来屏蔽各种硬件和操作系统的内存访问差异性,这样就能够在各种平台上都能达到Java程序一致的内存访问效果。以前的C++都是直接使用物理硬件和操作系统的内存模型,所...原创 2019-08-21 20:09:18 · 4683 阅读 · 0 评论 -
JVM高级特性与最佳实战(六)————线程安全与锁优化
引言今天是我学习《深入理解java虚拟机》最后一天了,我希望能把最后一章讲解的清晰。根据我的开发经验讲出自己的解释,给大家一个直观的理解。学完这个以后,下一步我打算把设计模式学完。《head first 设计模式》中我选了5篇设计模式,不再多学了,设计模式学那么多也没有,关键是练练思维。线程安全线程安全的实现方法(1)互斥同步,也叫阻塞同步,是一种悲观的并发策略。 互斥是实现同步的一种手...原创 2019-08-22 08:30:23 · 1003 阅读 · 0 评论 -
JVM高级特性与最佳实战(四)————垃圾收集算法
引言推荐阅读:JVM高级特性与最佳实战(一)————JAVA内存区域JVM高级特性与最佳实战(二)————对象的创建过程,内存布局,访问定位JVM中字符串常量池的详细剖析JVM高级特性与最佳实战(三)————如何判断对象已死?在...原创 2019-08-17 17:45:43 · 3034 阅读 · 0 评论 -
Java生产环境下性能监控与调优详解(一)————JDK命令行工具的监控
引言一个偶然的机会,让我决定深入了解下JVM调优。这个机会等我有机会再说。JVM参数分类标准参数,例如-help、-server、-client、-version、-showversion、-cp、-classpath等相对稳定的命令。X参数,它是非标准化参数。在各个版本的JVM中可能会有变化,但是变化比较小。例如-Xint:解释执行。-Xcomp:第一次使用就编译成本地代码。-Xmix...原创 2019-09-04 18:51:57 · 918 阅读 · 0 评论 -
Java生产环境下性能监控与调优详解(二)————演示内存溢出及导出内存映像文件及mat分析镜像文件
引言今天演示内存溢出中,我将向大家展示怎么使用JMAP和MAT来定位内存溢出的问题。然后今天也跟大家解释下第一章我说的为什么我要学习性能调优与监控。上上周我们旁边的外包厂商开发的系统生产环境CPU飙高,结果查到问题是这个类不能随意newSecurity.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider())...原创 2019-09-05 18:49:52 · 1047 阅读 · 1 评论 -
Java生产环境下性能监控与调优详解(三)————JSTACK工具介绍
引言回顾下上两节的基础知识:jps(java process status)用来查看所有的jvm进程,包括进程ID,进程启动的路径等。jps -l 可以具体到包启动路径的进程jinfo负责观察进程运行环境参数,包括Java System属性和JVM命令行参数。当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息jstat查看JVM统计信息(类加载信息,...原创 2019-09-06 12:25:44 · 7445 阅读 · 1 评论