JVM
文章平均质量分 61
尹夏穆雨
这个作者很懒,什么都没留下…
展开
-
深入理解JVM笔记一-java内存区域与内存溢出异常
title: 深入理解JVM笔记一-java内存区域与内存溢出异常 date: 2016-10-18 15:03:57 categories: JVM tags: JVM自动内存管理机制java内存区域与内存溢出异常1.java虚拟机运行时数据区程序计数器(Program Counter Register) 它是一块较小的内存空间,它的作用可以看做是当先线程所执行的字节码的信号指示器。原创 2017-01-16 23:02:58 · 260 阅读 · 0 评论 -
深入理解jvm十一 java内存模型
java内存模型与线程java内存模型主内存 工作内存关于主内存和工作内存之间具体的交互协议。java内存模型中定义了以下8中操作来完成,虚拟机实现时必须保证下面提到的每一种操作都是原子的,不可分割的。lock 作用于主内存unlock 作用于主内存read 作用于主内存load 作用于工作内存use 作用于工作内存:他把工作内存中的一个变量的值传递给执行引擎assign 作用于工作内原创 2017-01-16 23:11:00 · 391 阅读 · 1 评论 -
深入理解jvm十-早期(编译期)优化
1.编译期前端编译器:把java转换成.class文件的过程。 sun的javac eclipsejdt中的ecj后端运行时编译器(JIT just in time):字节码转换为机器码的过程 hotspot vm 中的 c1 c2编译器静态提前编译器(AOT ahead of time):把.java编译成本地机器码的过程。 gun compiler for javaps:java原创 2017-01-16 23:10:25 · 267 阅读 · 0 评论 -
深入理解JVM九---分派
title: jvm 分派 date: 2016-09-22 20:52:12 catagories: JVMtags: java众所周知,java是一门面向对象的程序语言,因为java具备面向对象的3个基本特征:继承 封装 多态。本章将解释多态性特征的一些基本的体现。如重载和重写载jvm中是如何实现的。分派1.静态分派所有依赖静态类型来定位方法执行版本的分派动作成为静态分派。静态分派的典型应用原创 2017-01-16 23:09:59 · 227 阅读 · 0 评论 -
深入理解JVM八---Java类的连接与初始化
title: Java类的连接与初始化 date: 2016-09-22 20:52:12 catagories: javatags: javaJava虚拟机通过装载、连接、初始化来使得一个Java类型可以被Java程序所使用,如下图所示,其中连接过程又分为验证、准备、解析三个部分。其中部分类的解析过程可以推迟到程序真正使用其某个符号引用时再去解析。解析过程可以推迟到累的初始化之后进行,但这是有原创 2017-01-16 23:09:23 · 179 阅读 · 0 评论 -
深入理解JVM七-虚拟机类加载机制
类从被加载到卸载,整个生命周期如下:加载(loading)连接(验证verification 准备preparation 解析resolution)初始化(initialization)使用(using)卸载(unloading)主动引用,触发类的初始化:1.遇到new getstatic putstatic invokestatic2.使用java.lang.reflect包的方法原创 2017-01-16 23:08:26 · 208 阅读 · 0 评论 -
深入理解JVM六-类文件结构
class文件是一组以八位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有添加任何分隔符,这使得整个class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当需要占用8位字节以上的空间数据时,则会按照高位在前的方式分割成若干个8位字节进行存储。class文件结构介绍:根据java虚拟机规范的规定,class文件格式采用一种类似c语言结构体的伪结原创 2017-01-16 23:07:13 · 228 阅读 · 0 评论 -
深入理解JVM笔记五-调优案例分析与实战
高性能硬件上部署程序,目前主要有两种方式:使用64位JDK来使用大内存使用若干个32位虚拟机建立逻辑集群来利用硬件资源集群间同步导致的内存溢出;堆外内存导致的溢出错误:direct memory:可通过-XX:MaxDirectMemorySize调整大小,内存不足会抛出outofmemory或者outofmemoryerror:direct buffer memory。线程堆栈:通过-Xss原创 2017-01-16 23:06:39 · 222 阅读 · 0 评论 -
深入理解JVM笔记五-调优案例分析与实战
高性能硬件上部署程序,目前主要有两种方式:使用64位JDK来使用大内存使用若干个32位虚拟机建立逻辑集群来利用硬件资源集群间同步导致的内存溢出;堆外内存导致的溢出错误:direct memory:可通过-XX:MaxDirectMemorySize调整大小,内存不足会抛出outofmemory或者outofmemoryerror:direct buffer memory。线程堆栈:通过-Xss原创 2017-01-16 23:06:18 · 200 阅读 · 0 评论 -
深入理解JVM笔记四-虚拟机性能监控与故障处理工具
jdk命令行工具1.jps 虚拟机进程状态工具常用的几个参数:-l 输出Java应用程序的main class的完整包-q 仅显示pid,不显示其它任何相关信息-m 输出传递给main方法的参数-v 输出传递给JVM的参数。在诊断JVM相关问题的时候,这个参数可以查看JVM相关参数的设置2.jstat虚拟机统计信息监视工具C:\Program Files\Java\jdk1.8.0_91\原创 2017-01-16 23:05:30 · 522 阅读 · 0 评论 -
深入理解JVM笔记三
内存分配策略1.对象有现在eden区分配。大多数情况下,对象在新生代eden区中分配,当Eden区没有足够的空间分配,虚拟机将发起一次minor GC。 虚拟机提供-XX:+PrintGCDetails这个日志参数,告诉虚拟机在发生垃圾收集行为时打印内存回收日志,并在进程退出的时候输出当前的内存各区域分配的情况。public class aa{ /** * -ve原创 2017-01-16 23:04:56 · 286 阅读 · 0 评论 -
jvm-questions
内存模型以及分区,需要详细到每个区放什么。方法区 用于存储以被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。堆 存放对象实例,几乎所有的对象实例以及数组都要在这里分配内存。虚拟机栈 线程私有。每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息本地方法栈 虚拟机用到的Native方法服务程序计数器 它是一块较小的原创 2017-01-16 23:11:34 · 196 阅读 · 0 评论