文章分类 - JVM
摘要:* 关于JAVA项目分类 * 传统项目容易遇到哪些JVM问题 * 互联网项目容易遇到哪些JVM问题 * 实战案例讲解,传统公司遇到的上传下载问题 * 项目介绍 * 项目特点分析 * 瓶颈分析 * 是否是单接口性能问题? 如果是的是,先考虑是否有sql慢查询,定位慢查询的方法一般是用explain查看
阅读全文
摘要:- Jconsole是什么? * JConsole (Java Monitoring and Management Console)是一种基于 JMX 的可视化监视、管理工具,它管理部分的功能是针对 JMXMBean 进行管理,由于 MBean 可以使用代码、中间件服务器的管理控制台或者所有符合 J
阅读全文
摘要:线程死锁是什么?怎么模拟一个线程死锁?怎么用jstack定位到线程死锁- 线程死锁是什么? * 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行- 死锁的模拟过程,代码模拟死锁 -怎么用jstack定位到线程死锁 线程状态有哪些?他们之间是怎么切换的
阅读全文
摘要:虚拟机工具的意义以及JPS - 虚拟机工具的意义 * 给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段 * 数据包括:运行日志、异常堆栈、GC 日志、线程快照 ( threaddump/javacore文件)、堆转储快照( heapdump/hprof文件)等
阅读全文
摘要:堆内存分配方式,分配规则 - Java堆内存区域的划分以及作用 - 对象分配的规则有哪些 * 对象主要分配在新生代的 Eden 区上 * 如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配 * 少数情况下也可能会直接分配在老年代中 - GC参数指定垃圾回收 * -Xms20 M、-Xmx2
阅读全文
摘要:Serial垃圾收集器 - hashMap list,hashcode - 是什么? - 收集算法是内存收到的方法论,垃圾回收器是内存回收的具体实现。 - Serial是一个单线程的垃圾收集器 - serial垃圾收集器的特点 - “Stop The World”,它进行垃圾收集时,必须暂停其他所有
阅读全文
摘要:1对象存活算法引用计数法 简介:判断对象是否存活算法,讲解对象垃圾回收对象是否回收判断 - 引用计数法存在的特点分析 - 优缺点 * 引用计数收集器可以很快的执行,交织在程序运行中。对程序需要不被长时间打断的实时环境比较有利。 * 无法检测出循环引用。如父对象有一个对子对象的引用,子对象反过来引用父
阅读全文
摘要:- 战略意义 能做出一个需求的同时也要懂得其对应的战略意义- 为什么要垃圾回收? * Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内
阅读全文
摘要:你是怎么访问你的对象的简介:Java程序员不不可不不知的对象访问定位⽅方式-当我们在堆上创建⼀一个对象实例例后,就要通过虚拟机栈中的reference类型数据来操作堆上的对象。现在主流的访问方式有两种(HotSpot虚拟机采用的是第二种): 1. 使用句句柄访问对象。即reference中存储的是对
阅读全文
摘要:Java程序员不可不知的对象结构 -对象头用于存储对象的元数据信息: -Mark Word 部分数据的长度在32位和64位虚拟机(未开启压缩指针)中分别为32bit和 64bit,存储对象⾃自身的运行行时数据如哈希值等。Mark Word⼀一般被设计为非固定的数据结 构,以便便存储更更多的数据信息和
阅读全文
摘要:- 对象创建的流程步骤包括哪些: 1- 虚拟机遇到一条new指令时,首先检查这个对应的类能否在常量池中定位到一个类的符号引用 - 判断这个类是否已被加载、解析和初始化 2- 为这个新生对象在Java堆中分配内存空间,其中Java堆分配内存空间的方式主要有以下两种 - 指针碰撞 - 分配内存空间包括开
阅读全文
摘要:Java内存区域方法区 - 是什么? - 是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据 - 什么是类信息:类版本号、方法、接口- 为什么? - 内存中存放类信息、静态变量等数据,属于线程共享的一块区域 - Hotspot使用永久代来实现方法
阅读全文
摘要:- 是什么? - 是Java内存区域中一块用来存放对象实例的区域,【几乎所有的对象实例都在这里分配内存】- 为什么? - 此内存区域的唯一目的就是存放对象实例 - Java 堆(Java Heap)是 Java 虚拟机所管理的内存中最大的一块 Java 堆是被所有线程共享的一块内存区域 - 特点?
阅读全文
摘要:- 是什么? - 用于作用域本地方法(C语言 C++等)执行的一块Java内存区域 - 什么是本地方法? 调用当前运行操作系统的开发语言方法的方法 native修饰没有方法体 - 为什么? - 与Java虚拟机栈相同,每个方法在执行的同时都会创建一个栈帧(Stack Framel)用于存储局部变量表
阅读全文
摘要:简介:JVM内存模型之java虚拟机栈 - 是什么? - 用于作用于方法执行的一块Java内存区域 - 为什么? - 每个方法在执行的同时都会创建一个栈帧(Stack Framel)用于存储局部变量表(局部变量的位置引用地址)、操作数栈、动态链接(引用其他对象的地址)、方法出口(return返回值)
阅读全文
摘要:总结: 程序计算器就是运行的线程自己的一小块内存,用来记录当前程序运行的行数; CPU的资源同时只能一个线程使用,在线程直接交替占用cpu资源的时候,重新回到当前线程的时候 这时就要从程序计数器中拿到上次执行到的行数位置。 Java内存区域程序计算器 简介:JVM内存模型之程序计算器 - 是什么?
阅读全文
摘要:- Java语言为甚么优势巨大,一处编译随处运行- Java的另外一个优势 * 自从内存管理机制之下,不再需要为没一个new操作去写配对的内存分配和回收等代码, 不容易出现内存泄漏和内存溢出等问题- JVM运行时数据区分布图讲解 * 线程共享数据区:方法区、堆 * 线程隔离数据区:虚拟机栈、本地方法
阅读全文