
java>jdk\jvm相关
jdk\jvm相关
和代码去流浪
这个作者很懒,什么都没留下…
展开
-
性能测试总结之内存泄露和内存溢出
刚刚做完了一个项目的性能测试,“有幸”也遇到了内存泄露的案例,所以在此和大家分享一下。主要从以下几部分来说明,关于内存和内存泄露、溢出的概念,区分内存泄露和内存溢出;内存的区域划分,了解GC回收机制;重点关注如何去监控和发现内存问题;此外分析出问题还要如何解决内存问题。下面就开始本篇的内容:第一部分 概念众所周知,java中的内存java虚拟机自己去管理的,他不想C++需要自己去释...转载 2019-11-23 23:27:01 · 3234 阅读 · 0 评论 -
Java微服务内存占用分析
一、Java 进程中有哪些组件会占用内存?通过 Native Memory Tracking 可以观察到有以下 JVM 组件。在命令行加上-XX:NativeMemoryTracking=summary,会增加3MB左右内存,损失5%-10%CPU,不宜用于生产环境。使用 jcmd <pid> VM.native_memory summary scale=MB 可以查看内存分配...转载 2019-11-23 23:25:24 · 6825 阅读 · 0 评论 -
性能调优-------(三)1分钟带你入门JVM性能调优
版本:JDK8一、阅读前热身:1、了解jvm启动流程:2、了解硬件、系统、进程三个层面的内存之间的概要内存分配,一张图你就懂:3、下面是需要背住的重点,敲黑板!!堆内存分配,想了解参数的可以到最下面看下备注和建议:先来个日志(看不懂那就看图):备注:Heap(堆内存)=eden+2survivor(年轻代)+ParOldGen(老生代)+Perm(jdk8以前)。jdk8以...转载 2019-11-20 22:50:00 · 112 阅读 · 0 评论 -
Java中的堆内存设置对线程创建数的影响以及-Xss参数的记录
Java的线程对象是存储在堆上的,所以,能够创建多少个线程,受到堆空间的大小限制,同时也受到每个线程的大小的限制,假如线程对象内部有一个非常大的数组字段,那就非常影响能够创建的线程的大小我们的例子:class Task implements Runnable { //5M堆内存 128k的情况下,最多创建31个线程就挂了 byte[] bytes = new byte[102...转载 2019-11-20 22:48:29 · 448 阅读 · 0 评论 -
JDK8 JVM参数与实际环境中的优化配置实践
如何配置我们的JVM呢,首先我们需要知道JVM的参数有哪些,然后根据这些参数的意义去分析自己的程序的JVM需要的配置。可以事先做一些尝试,再逐步调优,这个调优也是一个过程,没有足够的经验而做到一步到位是一件很困难的事情。事情是一点点做的,不能因为着急就胡乱地配置,踏踏实实戒骄戒躁。JVM在Java体系中的地位JVM是Java底层核心要素,可以说Java生态的东西都是运行在JVM里面的。Fro...转载 2019-11-20 22:45:51 · 767 阅读 · 0 评论 -
Java8默认使用的GC类型
先说结论 默认使用的是 Parallel Scavenge (新生代) 和 Parallel Old (老年代),基于我的Jdk 1.8.0_181-b13版本1 先简单的介绍Java目前的垃圾收集器连线的部分标识可以配合使用,对垃圾收集器不做过多介绍JavaGC.jpg他们对应的JVM参数如下新生代(别名) 老年代 JVM 参数 Serial ...转载 2019-11-19 22:34:10 · 8912 阅读 · 0 评论 -
Spring Boot引起的“堆外内存泄漏”排查及经验总结
背景为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是“-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPreT...转载 2019-11-19 22:33:01 · 149 阅读 · 0 评论 -
JVM(HotSpot)7种垃圾收集器
JVM(HotSpot)7种垃圾收集器7种垃圾收集器作用于不同的分代,如果两个收集器之间存在连续,就说明他们可以搭配使用。从JDK1.3到现在,从Serial收集器-》Parallel收集器-》CMS-》G1,用户线程停顿时间不断缩短,但仍然无法完全消除。1、Serial收集器(串行收集器) Serial收集器是最基本、发展历史最悠久的收集器,曾是(JDK1....转载 2019-11-19 22:29:31 · 96 阅读 · 0 评论 -
JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
如果想了解Java内存模型参考:jvm内存模型-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东)相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋。一、 技术背景你要了解吧二、 哪些内存需要回收?2.1 引用计数算法2.1.1 算法...转载 2019-11-18 23:51:35 · 147 阅读 · 0 评论 -
jstat使用详解(jvm问题排查)
jstat命令使用jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]注意:使用的jdk版本是jdk8.类加载统计:C:\Users\Administrator>jstat -class 2060Loaded Bytes Unloaded Bytes Tim...转载 2019-11-18 23:50:07 · 364 阅读 · 0 评论 -
聊聊HotSpot VM的Native Memory Tracking
序本文主要研究一下HotSpot VM的Native Memory TrackingNative Memory Trackingjava8给HotSpot VM引入了Native Memory Tracking (NMT)特性,可以用于追踪JVM的内部内存使用使用开启-XX:NativeMemoryTracking=summary使用-XX:NativeMemor...转载 2019-11-18 23:48:26 · 937 阅读 · 0 评论 -
Java内存之本地内存分析神器: NMT 和 pmap
背景其他团队的一些同事经常问我一个问题:你的Java进程怎么占了那么多Virtual Size和RSS? 最近,我基本上可以回答清楚这个问题了。用NMT和pmap基本就就能搞清楚Java进程为什么占了那些Virtual Size和RSS。 NMT是Native Memory Tracking的缩写,是Java7U40引入的HotSpot新特性。 pmap,众所周知,就是Linux上用来看进程地...转载 2019-11-14 23:04:02 · 781 阅读 · 1 评论 -
Java之jvm和线程的内存
在jvm内存调整过程中,我们经常使用的参数就是: -Xms为jvm启动时分配的初始堆的大小,也是堆大小的最小值,比如-Xms200m,表示分配200M -Xmx为jvm运行过程中分配的最大堆内存,比如-Xmx500m,表示jvm进程最多只能够占用500M内存 -Xss为jvm启动的每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M ...转载 2019-11-14 23:02:29 · 489 阅读 · 0 评论 -
记一次JVM堆外内存泄露Bug的查找
前言 JVM的堆外内存泄露的定位一直是个比较棘手的问题。此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤了Bug的源头。笔者将此Bug分析的过程写成博客,以飨读者。 由于物理内存定量分析部分用到了linux kernel虚拟内存管理的知识,读者如果有兴趣了解请看ulk3(《深入理解linux内核第三版》) 内存泄露Bug现场 一个...转载 2019-11-12 10:16:17 · 374 阅读 · 0 评论 -
JVisualVM简介与内存泄漏实战分析
一、JVisualVM能做什么 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。 在JDK...转载 2019-11-05 10:56:01 · 966 阅读 · 0 评论 -
JConsole远程连接配置
JConsole远程连接还是有一点坑的。这里记录一下配置过程,好记性不如烂笔头。1.在远程机的tomcat的catalina.sh中加入配置:JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.202.121 -Dcom.sun.management.jmxremote"JAVA_OPTS="$JAVA_OPTS -D...转载 2019-11-05 10:50:13 · 115 阅读 · 0 评论 -
内存泄露java.lang.OutOfMemoryError: PermGen space解决方法
内存泄露Java.lang.OutOfMemoryError: PermGen space解决办法今天访问web服务器,点击几个网页,tomcat服务就瘫痪了,通过查看日志,发现java.lang.OutOfMemoryError: PermGen space错误,如下Mar 6, 2010 3:27:06 PM org.apache.coyote.http11.Http11Prot...转载 2019-11-05 10:47:13 · 2296 阅读 · 0 评论 -
深入理解JDK、JRE(两套)、JVM、以及不同目录下的java.exe
1、jdk下bin目录里的java.exe与外部jre中的java.exe的秘密jdk里的java.exe和jre中的java.exe其实是一样的,但我们在运行的时候用的却是优先使用外部jre中的java.exe(即使我们安装了JDK且也配置了环境变量,其实,cmd控制台操作时,跟我们配置的环境变量Path中存放的顺序就有关了,如果C:\Windows\system32,放在前面的话,优先使用的...转载 2019-10-29 22:14:38 · 1191 阅读 · 0 评论 -
使用Memory Analyzer tool(MAT)分析内存泄漏
前言的前言写blog就是好,在大前提下可以想说什么写什么,不像投稿那么字字斟酌。上周末回了趟成都办事,所以本文来迟了。K117从达州经由达成线往成都方向走的时候,发现铁路边有条河,尽管我现在也不知道其名字,但已被其深深的陶醉。河很宽且水流平缓,河边山丘森林密布,民房星星点点的分布在河边,河里偶尔些小船。当时我就在想,在这里生活是多么的惬意,夏天还可以下去畅游一番,闲来无事也可垂钓。唉,越来越讨厌...转载 2019-10-29 22:13:06 · 337 阅读 · 0 评论 -
用MAT分析JAVA程序运行时的内存使用情况
Java出现OutOfMemoryError或者发现Java应用程序占用的内存很异常,那么我们一般采用下面的步骤分析:A. 把Java应用程序使用的heap dump下来B. 使用Java heap分析工具,找出内存占用超出预期的嫌疑对象C. 根据情况,分析嫌疑对象和其他对象的引用关系。D. 分析程序的源代码,找出嫌疑对象数量过多的原因。以下面的代码为例:public class TObject ...转载 2019-10-29 22:11:35 · 224 阅读 · 0 评论 -
MAT(Memory Analyzer Tool)工具入门介绍
1、MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象。 2.为什么使用M...转载 2019-10-25 23:02:50 · 401 阅读 · 0 评论