![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 78
Mr_haining
在逆境中寻求希望!在悲观中寻求快乐!
展开
-
JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置
XmnXmsXmxXss有什么区别Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。-Xms 堆内存的初始大小,默认为物理内存的1/64-Xmx 堆内存的最大大小,默认为物理内存的1/4-Xmn 堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn-Xss 设置每个线程可使用的内存大小,即栈的大小。在相同物理内存下,减小这个值能生成更多的线程,当然操作系统对一个进程内的线程数还是有限制的,不能无限生成原创 2021-04-26 11:16:46 · 248 阅读 · 0 评论 -
Jvm 参数xms和xmx是否必须设置相等
最近申请了几台机器专门用来运行Kafka Streams应用,发现经常发生OOM导致应用挂掉,原因是启动的时候指定了-Xms2G -Xmx2G,所以16G内存的机器没启几个应用内存就被占满了,尽管这些程序只是空跑。查了一下一般都建议-Xms和-Xmx设置为相等,那么能不能设置为不一样呢?先了解一下-Xms和-Xmx的含义-Xms初始堆的大小,也是堆大小的最小值,默认值是总共的物理内存/64(且小于1G),默认情况下,当堆中可用内存小于40%(这个值可以用-XX: MinHeapFreeRat原创 2021-04-26 11:13:44 · 2505 阅读 · 0 评论 -
Java中的内存管理 HotSpot™虚拟机
1.介绍 Java™2平台标准版(J2SE™)的一个优点是它执行自动内存管理,从而使开发人员免受显式内存管理的复杂性。本文概述了Java HotSpot虚拟机(JVM)中的内存管理Sun的J2SE 5.0发布。它描述了可用于执行内存管理的垃圾收集器,以及给出了一些关于选择和配置收集器以及设置内存区域大小的建议这是收集器操作的。它还作为一种资源,列出了一些最常用的选项影响垃圾收集器的行为,并提供大量链接到更详细的文档。第2节是为不熟悉自动内存管理概念的读者准备的。它有一个简短的讨论这种管...原创 2021-04-22 18:11:46 · 167 阅读 · 0 评论 -
Java对象分配流程
在学习Java的过程中,很多喜欢说new出来的对象分配一定在对上;其实不能这么说,只能说大部分对象分配是在对上。通过对象的分配过程分析,除了堆以外,还有两个地方可以存放对象:栈和TLAB(Thread Local Allocation Buffer)。Java对象分配流程图:如果开启栈上分配,JVM会先进行栈上分配,如果没有开启栈上分配或则不符合条件的则会进行TLAB分配,如果TLAB分配不成功,再尝试在eden区分配,如果对象满足了直接进入老年代的条件,那就直接分配在老年代。.原创 2021-04-17 17:41:21 · 523 阅读 · 0 评论 -
JDK jmap命令(Java Memory Map)
1、介绍打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。可以输出所有内存中对象的工具,甚至可以将VM中的heap,以二进制输出成文本。使用方法jmap-histopid。如果连用SHELLjmap-histopid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap-dump:format=b,file=outfile3024可以将3024进程的内存heap输出出来到outfi...原创 2021-04-16 17:22:11 · 142 阅读 · 0 评论 -
JDK jstat命令(Java Virtual Machine Statistics Monitoring Tool)
1、介绍Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:- 类的加载及卸载情况- 查看新生代、老生代及持久代的容量及使用情况- 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间- 查看新生代中Eden区及Survior区中容量及分配情况等jstat工具特别强大,它有众多的可选项,通过提供多种不同的监控维度,使我们可以从不同的维度来了解到当前JVM堆的使用情况。详细查看原创 2021-04-16 17:20:46 · 126 阅读 · 0 评论 -
JDK jps命令(Java Virtual Machine Process Status Tool)
1、介绍用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态,包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程,可以把jps理解为ps的一个子集。使用jps时,如果没有指定hostid,它只会显示本地环境中所有的Java进程;如果指定了hostid,它就会显示指定hostid上面的java进程,不过这需要远程服务上开启了jstatd服务,可以参看前面的jstatd章节来启动jstad服务。...原创 2021-04-16 17:15:09 · 303 阅读 · 0 评论 -
JDK jstack命令(Java Stack Trace)
1、介绍jstack用于打印出给定的java进程ID或corefile或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack[-l]pid如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的javastack和nativestack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,...原创 2021-04-16 17:13:38 · 615 阅读 · 0 评论 -
JDK JMAP几个慎用操作
JDK中带有了一堆的工具是可以用来查看运行状况,排查问题的,但对于这些工具还是要比较清楚执行后会发生什么,否则有可能会因为执行了一个命令就导致严重故障,重点讲下影响比较大的jmap。最主要的危险操作是下面这三种:1. jmap -dump这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用。2. jmap -permstat这个命令执行,JVM会去统计perm区的状况,原创 2021-04-16 17:06:07 · 479 阅读 · 0 评论 -
分析及解决java OOM问题
1)什么是OOM?OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明: Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. 意思就是说,当原创 2021-04-16 17:04:06 · 288 阅读 · 0 评论 -
jvm 性能调优工具之 jmap
概述命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。jmap 用法参数:option: 选项参数。 pid: 需要打印配置信息的进程ID。 executable: 产生核心dump的Java可执行文件。 core: 需要打印配置信息的核心文件。 server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务.原创 2021-04-16 16:52:48 · 149 阅读 · 0 评论