jvm
琅琊山二当家
这个作者很懒,什么都没留下…
展开
-
jvm 堆内存分配
一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。原创 2016-04-12 23:55:31 · 873 阅读 · 0 评论 -
JVM年轻代(young generation)老年代(old generation tenured)持久代(permanent generation)GC
JVM年轻代(young generation)老年代(old generation tenured)持久代(permanent generation)GC关于jvm内存代,看到这篇文章,转发下链接地址 ---多谢 虚拟机中的共划分为三个代:年轻代(Young Generation)、老年代(Old Generation)和持久代(Perma转载 2017-09-28 18:06:44 · 1191 阅读 · 0 评论 -
Runtime类中的freeMemory,totalMemory,maxMemory等几个方法
maxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存,以字节为单位,如果在运行java程序的时 候,没有添加-Xmx参数,那么就是64兆,也就是说maxMemory()返回的大约是64*1024*1024字节,这是java虚拟机默认情况下能 从操作系统那里挖到的最大的内存。如果添加了-Xmx参数,将以这个参数后面的值为准,例如java -cp转载 2017-09-21 15:42:53 · 565 阅读 · 0 评论 -
jvm 调优的总结 查看应用的JVM实时情况
springboot 项目启动参数java -Xms12g -Xmx12g -Xmn5g -Xss256k -XX:+UseG1GC -XX:ParallelGCThreads=20 -XX:InitiatingHeapOccupancyPercent=75 -server -jar /app/zuul/horus-zuul-server_20171017.jar&Xmn 5G 新时代配置原创 2017-10-23 13:50:42 · 1530 阅读 · 0 评论 -
一次JVM调优实战
http://blog.csdn.net/csujiangyu/article/details/75264352 来源:早上查看低峰期gc情况,发现昨晚上fgc有274次,感觉有些不正常,开始查找原因[jump@order-binlog-data002 spring-boot]$ sudo jstat -gc 20028 4000 10 S0C S1C S转载 2017-11-07 20:43:37 · 434 阅读 · 0 评论 -
使用jprofiler分析dump文件一个实例
1.. jstat 命令先分析一下一次fullgc之后 old 老年代使用比例 只降低2% 应该有什么大的对象常驻内存。 2.可以使用jmap 命令查看对象大小 (这里后面使用jprofiler 就没用这个命令) jmap -histo:live 72947 | more 3 .dump 线上文件栈[root@yszyz10a153 ~]# jmap -dum...原创 2017-12-01 14:48:18 · 32189 阅读 · 2 评论 -
JVM调优总结 + jstat 分析
stat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒输出结果不断的在屏幕打印出结果 S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC转载 2017-12-01 14:53:02 · 4838 阅读 · 0 评论 -
JVM默认参数记录
JVM 有下面的一些jvm的参数,他们的默认值一般比较容易忽略,记录下来,方便查询-Xms 默认情况下堆内存的64分之一-Xmx 默认情况下对内存的4分之一-Xmn 默认情况下堆内存的64分之一-XX:NewRatio 默认为2-XX:SurvivorRatio 默认为8 避免Concurrent Mode Failure年老代剩余空间>=EDEN转载 2017-12-01 14:54:14 · 1280 阅读 · 0 评论 -
VM在JDK8取消了永久代(PermGen)代之元空间(Metaspace)的意义
转载: https://blog.csdn.net/miaoao611/article/details/52677666最直接的后果,就是以后再也不会有outofmemoryerror permgen space这个错误了最根本的好处就是在效率提升的同时增加了安全性。相对于C++来说,java语言更加安全,jvm具有自动的垃圾回收机制,而C++的程序员需要手动去清除垃圾。JVM这种设计思路确实使j...转载 2018-05-30 09:56:54 · 546 阅读 · 0 评论 -
jVM虚拟机调优指南
转载:http://www.cnblogs.com/maybo/p/7786229.html本章通过阅读JVM垃圾搜集指南文档,整理虚拟机主要配置以及,理解不同的垃圾搜集器。垃圾搜集算法引用计数算法 根搜索算法 标记-清除算法 复制算法 标记-整理算法 分代收集算法 搜集算法网上有很多介绍这里不在进行整理。解决问题: 对象的回收是一个繁重负载的工作,自动垃圾回收可...转载 2018-07-18 14:00:45 · 1363 阅读 · 0 评论 -
垃圾回收器比较: G1 vs CMS
转载:https://www.jianshu.com/p/bdd6f03923d1最近看了Garbage-First Garbage Collection 和 A Generational Mostly-concurrent Garbage Collector这两篇论文,这里总结下两者的异同。1. 分代收集这个现在是垃圾回收器的标配,G1和CMS也不例外。但是G1同时回收老年代和年轻代...转载 2018-11-06 15:17:05 · 1163 阅读 · 0 评论 -
java动态代理实现与原理详细分析
转载:https://www.cnblogs.com/gonjan-blog/p/6685611.html关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理。 一、代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把...转载 2018-11-23 10:29:37 · 206 阅读 · 0 评论 -
Java 分代收集算法[imp]
转载: https://blog.csdn.net/mccand1234/article/details/52078645摘要当前商业虚拟机的垃圾收集都采用“分代收集”(Generational Collection)算法,这种算法并没有什么新的思想,只是根据对象的存活周期的不同将内存划分为几块。一般是把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。在新生...转载 2018-11-30 17:07:50 · 424 阅读 · 0 评论 -
jvm中jstat命令各个参数的含义
转载:https://blog.csdn.net/exceptional_derek/article/details/48494773stat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒输出结果S0 — Heap上的 Survivor space 0 区已使用空间的百分比 S1 — Heap上的 Survi...转载 2019-02-12 13:41:40 · 2203 阅读 · 0 评论 -
java程序cpu 升高一个可能的原因
最近一个应用出现了cpu升高到100%的问题,一直没有解决掉根据常见的top -Hp等思路发现占用cpu较高的几个pid 都是正常业务,不过当时也看到有属于内存回收的进程占用的cpu非常高,但是很快就没有了, 当时没太注意 后来还改了程序的一个实现方式,因为修改了cat的源码,当时以为改坏了,目前看只靠猜测是不靠谱的修改了实现方式还是不行 还是几天后会cpu100%处理步...原创 2019-02-11 20:10:26 · 2745 阅读 · 0 评论 -
Java即时编译和逃逸分析(及Java相对于c/c++慢的原因)
转载:https://www.cnblogs.com/csxf/p/3665651.html在Java编程语言和环境中,即时编译器(JITcompiler,just-in-time compiler)是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。当你写好一个Java程序后,源语言的语句将由Java编译器编译成字节码,而不是编译成与某个特定的处理...转载 2019-05-07 10:16:37 · 254 阅读 · 0 评论 -
为什么Java永远比C++慢?
转载:https://blog.csdn.net/chrysanthemumcao/article/details/38495749Why Java Will Always Be Slower than C++by Dejan Jelovic为什么Java永远比C++慢?耍过Java程序,或者用Java码过程序的人都晓得,Java要比用C++写成的原生程序要慢。这是咱用Java时...转载 2019-05-07 10:38:51 · 811 阅读 · 2 评论 -
jdk8 jvm配置参数说明
转载https://www.cnblogs.com/syuf/p/10183683.html这些选项是特定于Java HotSpot虚拟机的通用选项。-X显示所有可用-X选项的帮助。-Xbatch禁用后台编译。默认情况下,JVM将该方法编译为后台任务,以解释器模式运行该方法,直到后台编译完成。该-Xbatch标志禁用后台编译,以便所有方法的编译作为前台任务继续进行,直到完成。...转载 2019-07-29 15:17:23 · 765 阅读 · 0 评论 -
程序员也应该有点艺术范儿,不要把“老年代”叫成“Old Generation”
JAVA GC为了针对不同存活率场景采用不同的算法进行高效回收,采取了分代策略,通常是:“新生代(Young Generation)”和“老年代(Tenured Generation)”。但是看比较多的文章时,总发现把老年代Tenured Generation说成Old Generation,我想命名者看到他的别具匠心被这么亵渎估计要彻底崩溃~~。新 生代中的专门用作存放新生对象的场所被称转载 2017-09-28 17:40:55 · 688 阅读 · 0 评论 -
JAVA虚拟机是如何使用内存
我们知道,JAVA程序本身是不能直接在计算机上运行的,它需要依赖于硬件基础之上的操作系统和JVM(JAVA虚拟机)。JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度上会影响应用程序的性能。 JVM其实就是操作系统上的一个普通程序(进程名叫java,这个程序可以解释执行class文件,系统中当前运行了多少个java程序就会有多少个java进转载 2017-09-13 15:54:17 · 491 阅读 · 0 评论 -
利用Java heap dump查找、分析问题
开发、应用中老是会遇到OutOfMemory异常,而且常常是过一段时间内存才被吃光,这里可以利用java heap dump出jvm内存镜像,然后再对其进行分析来查找问题。《java heap dump触发和分析》这篇文章很好的介绍了heap dump的方法和分析的工具。平常利用jmap -dump:format=b,file=/path/file.hprof 这个java自转载 2016-04-24 19:08:45 · 2652 阅读 · 0 评论 -
Exception in thread "http-bio-8080-exec-2" java.lang.OutOfMemoryError: PermGen space
这个问题 是tomcat下 加载的类过多,解决方法是解决方法: 1、 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在“echo"Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:setJAVA_OPTS=%JAVA_OPT原创 2016-06-24 18:30:12 · 1364 阅读 · 0 评论 -
深入了解JVW
Java内存组成介绍:堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非转载 2016-06-09 23:12:44 · 7094 阅读 · 3 评论 -
一段fullGC日志的分析
{Heap before GC invocations=49 (full 4): def new generation total 18432K, used 9232K [0x03c00000, 0x05000000, 0x09150000) eden space 16384K, 43% used [0x03c00000, 0x043043c8, 0x04c00000) fr原创 2016-06-10 00:19:19 · 1528 阅读 · 0 评论 -
《深入理解Java虚拟机(第2版)》的笔记-第89页
章节名:3.5.8 理解GC日志页码:第89页 2014-02-11 03:39:44针对verbose GC log来说:GC日志开头的“[GC”和“[Full GC”说明了这次垃圾收集的停顿类型,而不是 用来区分新生代GC还是老年代GC的。如果有“Full”,说明这次GC是发生了Stop-The-World 的这句说得不太好。这样说的话就暗指"[GC"不是stop-the-wor转载 2016-06-11 22:36:29 · 354 阅读 · 0 评论 -
优化Java堆大小的5个技巧
本文作者Pierre是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE、中间件和JVM技术。根据他多年的工作实践经验,他发现许多性能问题都是由Java堆容量不足和调优引起的。下面他将和大家分享非常实用的5个Java堆优化技巧。1.JVM:对难以理解的东西产生恐惧感千万不要以为,通过配置,调优,就可以排除那些你所不明白的问题。有些人认为Java程序员不需要知道内部转载 2016-07-25 10:00:08 · 589 阅读 · 0 评论 -
MAT使用的几张图例技巧
下面三个是内存泄漏可能性比较大的地方problem suspect 1problem suspect 2problem suspect 3点击detail 可以看详细在dominator_tree 可以对象按照group by package 分类 便于查看那部分代码出问题选中一个节点 右键查看with inc原创 2016-07-21 17:32:24 · 5589 阅读 · 1 评论 -
tomcat7 生产环境优化(有些JVMtomcat5 6上的参数被取消了)
TOMCAT的优化基本分为两个方面:一、JVM参数的优化二、TOMCAT自身的配置 一、JVM参数的优化 在/bin目录下的catalina.sh头部加入 写道JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=GBK -server -Xms1024m -Xmx1024m转载 2016-07-25 16:34:52 · 1273 阅读 · 0 评论 -
jmap dump 出JVM 内存信息命令
jmap -dump:live,format=b,file=heap.bin pid heap.bin 是生成文件名pid 是tomcat 或者 java 应用的pid 可以在top命令查看默认生成路径 是tomcat/bin原创 2016-06-03 20:12:35 · 5183 阅读 · 0 评论 -
retained heap shallow heap 区别及介绍
原文:http://plumbr.eu/blog/how-much-memory-what-is-retained-heap我将需要多少内存?当你构建一个解决方案,创建一个数据结构或者选择一个算法时这个问题你可能问过自己或者别人.请问这个图是否适合在我的3G堆上,它包含1,000,000条边并且我使用HashMap存储它?我可以使用标准的集合API来构建我的自定义缓存解决方案或者他们带来的开销转载 2016-07-21 14:32:41 · 3317 阅读 · 0 评论 -
jstack对线程信息的分析
jstack 是sun JDK 自带的工具,通过该工具可以看到JVM 中线程的运行状况,包括锁等待,线程是否在运行执行 jstack [pid] ,线程的所有堆栈信息"http-8080-10" daemon prio=10 tid=x0a949bb60 nid=0x884 waiting for monitor entry [...]"http-8080-10" 这个线程处转载 2016-07-21 15:15:00 · 694 阅读 · 0 评论 -
jmap 查看内存使用直方图
jps -- 查看进程号jmap -histo pid 查看堆内存中的对象数目、大小统计直方图,如果带上live则表示先进行一次fullgc 再统计内存使用情况,如下:jmap -histo:live pid | more ...原创 2016-08-08 18:08:31 · 2478 阅读 · 0 评论 -
Java GC 日志图解
Java GC日志可以通过 +PrintGCDetails开启以ParallelGC为例YoungGC日志解释如下(图片源地址:这里) :FullGC(图片源地址:这里):一目了然,一图胜千言转载 2016-08-09 10:47:48 · 772 阅读 · 0 评论 -
jvm的GC日志分析
M的GC日志的主要参数包括如下几个:-XX:+PrintGC 输出GC日志-XX:+PrintGCDetails 输出GC的详细日志-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)-XX转载 2016-08-09 11:38:36 · 775 阅读 · 0 评论 -
在运行时开启GC日志
关于GC的一些参数-verbose.gc开关可显示GC的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等打开-xx:+ PrintGCDetails开关,可以详细了解GC中的变化。打开-XX: + PrintGCTimeStamps开关,可以了解这些垃圾收集发生的时间,自JVM启动以后以秒计量。最后,通过-xx: + PrintHeapAt...原创 2016-08-09 11:23:47 · 3883 阅读 · 0 评论 -
tomcat配置文件开启gc 日志
linux 下面 tomcat bin catalina.sh 增加 </pre><pre name="code" class="html">JAVA_OPTS="-Xms2096m -Xmx2096m -Xss512K -XX:PermSize=128m -XX:MaxPermSize=1024m -verbose:gc -XX:+PrintGC -XX...原创 2016-08-11 10:14:02 · 6232 阅读 · 0 评论 -
JVM实用参数(七)CMS收集器
HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间。该目标对于大多数交互式应用很重要,比如web应用。在我们看一下有关JVM的参数之前,让我们简要回顾CMS收集器的操作和使用它时可能出现的主要挑战。就像吞吐量收集器(参见本系列的第6部分),CMS收集器处理老年代的对象,然而其操作要复杂得多。吞吐量收集器总是暂停应用程序线程,并且可能是相当长的一段时间,转载 2016-10-11 17:35:20 · 398 阅读 · 0 评论 -
Arthas使用指南
转载:MartinDaihttps://segmentfault.com/a/1190000014618329?utm_source=tag-newestArthas 能为你做什么?这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在预发 debug 一下,难道只能通过加日志...转载 2019-07-22 14:53:51 · 2611 阅读 · 0 评论