jvm
文章平均质量分 75
血师注
纸上得来终觉浅,绝知此事要躬行。
展开
-
JVM——堆——分代
1.为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会腾...原创 2019-09-18 10:11:44 · 141 阅读 · 0 评论 -
JVM——使用工具——jhat
简介HProf是JDK自带一个简单的性能分析工具。它是一个动态链接库文件,监控CPU的1使用率、内存堆栈分配情况等。使用命令行格式为:java -Xrunhprof ToBeProfiledClass1HProf常被用于内存使用情况分析。有两种分析方法:内存分配历史的跟踪记录(dump)和将占用内存的对象进行排序(sites)。命令行如下java -Xrunhprof:heap=al...原创 2019-09-24 17:58:23 · 754 阅读 · 0 评论 -
JVM——使用工具——jhat
jhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令。之前的文章讲到过,使用jmap可以生成Java堆的Dump文件。生成dump文件之后就可以用jhat命令,将dump文件转成html的形式,然后通过http访问可以查看堆情况。jhat命令解析会Java堆dump并启动一个web服务器,然后就可以在浏览器中查看堆的dump文件了。实例一...原创 2019-09-24 17:52:02 · 848 阅读 · 0 评论 -
JVM——使用工具——jmap
概述命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。jmap 用法参数:option:选项参数。 pid:需要打印配置信息的进程ID。 executable:产生核心dump的Java可执行文件。 core:需要打印配置信...原创 2019-09-24 17:09:54 · 183 阅读 · 0 评论 -
JVM——使用工具——jstack
概述jstack是jdk自带的线程堆栈分析工具,使用该命令可以查看或导出 Java 应用程序中线程堆栈信息。Jstack 用法Usage: jstack [-l] <pid> (连接到正在运行的进程) jstack -F [-m] [-l] <pid> (连接到挂起的进程) jstack [-m] [-l] <execut...原创 2019-09-24 17:00:35 · 477 阅读 · 0 评论 -
JVM——使用工具——jps
概述jps(Java Virtual Machine Process Status Tool) 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。 通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。如果在 linux 中想查看 java 的进程,一般我们都需要 ps -ef | grep java 来获取...原创 2019-09-24 16:46:13 · 156 阅读 · 0 评论 -
JVM——使用工具——jstat
介绍Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。jstat工具特别强大,...原创 2019-09-19 10:49:08 · 182 阅读 · 0 评论 -
JVM——参数设置与解析——基本性能调优参数
基本参数-Xms初始的Heap的大小。最小堆的大小,也就是当你的虚拟机启动后,就会分配这么大的堆内存给你-Xmx最大Heap的大小。是最大堆的大小-Xmn年轻代大小。-Xss规定了每个线程堆栈的大小。一般情况下256K是足够了。影响了此进程中并发线程数大小。基本常识1.JVM的堆的内存,是通过这两个参数控制的-Xms,-Xmx。2.在很多情况下,-Xm...原创 2019-09-19 09:38:01 · 215 阅读 · 0 评论 -
JVM——内存排查工具——jprofiler
内存泄漏的现象:1. 在服务器中执行某些批量操作的时候,发现内存只升不降;就算gc后,内存也不能被完全释放;2. 除非重启tomcat服务器,内存永远不会被释放,反复执行这些操作,会导致无可用内存,tomcat死掉;1. 初始化检验环境:切换到“Live Memory-->All Objects”标签,可以看到当前tomcat中的对象情况。...原创 2019-09-19 09:32:56 · 239 阅读 · 0 评论 -
JVM——参数设置与解析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同...原创 2019-09-18 18:09:17 · 209 阅读 · 0 评论 -
JVM——内存泄漏排查
GC 回收对于 java GC 回收来说,怎么确认一个对象是否可被回收是最首要的事情。1.引用计数很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加 1;当引用失效时,计数器值就减 1;任何时刻计数器为 0 的对象就是不可能再被使用的。引用计数算法(Reference Counting)的实现简单,判定效率也很高,在大部分情况下...原创 2019-09-18 17:54:06 · 1040 阅读 · 0 评论 -
JVM——虚拟机
jvm运行时数据区1、 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作...原创 2019-09-18 17:53:50 · 93 阅读 · 0 评论 -
JVM——虚拟机——HotSpot VM
提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies”的小公司设计的;甚至这个虚拟机最初并非是为Java语言而开发的,它来源于Strongtalk VM,而...原创 2019-09-18 10:12:01 · 225 阅读 · 0 评论 -
JVM——问题——gc后内存没有归还给系统
如果需要将内存归还给系统,解决方案,添加参数-XX:GCTimeRatio=19 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=30这个热点JVM是否将内存释放回操作系统,但这是不情愿的,因为调整堆的大小是很昂贵的,并且假设如果您需要该堆一次,您将再次需要它。你可以通过设置-XX:GCTimeRatio=19 -XX:MinHeap...原创 2019-09-25 09:08:11 · 5723 阅读 · 0 评论