JVM虚拟机
文章平均质量分 83
虚拟机常用命令和常见问题丁文
陈如水
市场经济条件下,每个人都有一个价,你有哪些本事?你值不值这个价?
人生如茶,经历浮沉,经历苦难浸泡,方能长大.
展开
-
20210610 线程数不断飙升问题定位
1)现象通过监控发现,2)分析3)解决原创 2021-06-10 20:49:57 · 1490 阅读 · 1 评论 -
20210608 由永久代到元空间
永久代(perm)永久代是Hotspot虚拟机特有的概念,是方法区的一种实现。在Java 8中,永久代被彻底移除,取而代之的是另一块与堆不相连的本地内存——元空间。永久代或者“Perm Gen”包含了JVM需要的应用元数据,这些元数据描述了在应用里使用的类和方法。注意,永久代不是Java堆内存的一部分。永久代存放JVM运行时使用的类。永久代同样包含了Java SE库的类和方法。永久代的对象在full GC时进行垃圾收集。在Java8中,元空间(Metaspace)登上舞台,方法区存在于元空间(M原创 2021-06-08 20:10:20 · 164 阅读 · 0 评论 -
20210608 对象的内存大小计算
1,对象在堆内存中的存储格式;2,数据类型的大小;3,使用工具获取对象大小;1,对象在堆内存中的存储格式;原创 2021-06-08 17:52:17 · 528 阅读 · 1 评论 -
20210519 使用jstack命令排查线程死锁问题
jstack主要用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。1,死锁代码如下/** * 测试死锁问题 */public class DeadLockDemo { public static原创 2021-05-19 15:44:51 · 1630 阅读 · 1 评论 -
20210520 使用jstat分析垃圾收集状况
常用命令:jstat -gcutil <pid> 1000gc垃圾回收信息gcXXX各区域GC的详细信息,如-gcoldJava 堆分为新生代和老年代,新生代一般划分为三块区域,Eden + From Survivor + To Survivor,Eden 和 Survivor 的内存比为8:1,每次只使用一个Eden 和一个 Survivor 区域,另一个 Survivor 用于复制收集算法回收内存。对象一般尽量分配到新生代中,而对于大对象(长字符串和大数组)直接分配原创 2021-05-20 14:33:30 · 225 阅读 · 1 评论 -
20210520 使用jmap分析虚拟机内存状况
堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的。栈与堆栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、原创 2021-05-20 16:11:18 · 1448 阅读 · 1 评论