Java性能分析
跨时代135
这个作者很懒,什么都没留下…
展开
-
使用Memory Analyzer tool(MAT)分析内存泄漏(二)
前言的前言写blog就是好,在大前提下可以想说什么写什么,不像投稿那么字字斟酌。上周末回了趟成都办事,所以本文来迟了。K117从达州经由达成线往成都方向走的时候,发现铁路边有条河,尽管我现在也不知道其名字,但已被其深深的陶醉。河很宽且水流平缓,河边山丘森林密布,民房星星点点的分布在河边,河里偶尔些小船。当时我就在想,在这里生活是多么的惬意,夏天还可以下去畅游一番,闲来无事也可垂钓。唉,越来转载 2016-02-27 15:19:24 · 393 阅读 · 0 评论 -
Java内存泄露原因详解
一、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方转载 2016-01-07 17:11:19 · 264 阅读 · 0 评论 -
Java基础恶补——内存泄露、内存溢出
Java基础恶补——内存泄露、内存溢出(2010-09-15 15:56:26)转载标签:杂谈 要点内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件设计缺陷引起的。 内存泄漏可以分为4类:转载 2016-01-07 19:23:20 · 356 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露转载 2016-03-22 23:45:55 · 376 阅读 · 0 评论 -
JProfiler学习笔记
JProfiler学习笔记 一、安装JProfiler 从http://www.ej-technologies.com/下载5.1.2并申请试用序列号 二、主要功能简介1.内存剖析 Memory profilerJProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的转载 2016-01-08 16:28:23 · 390 阅读 · 0 评论 -
PermGen space错误解决方法
PS:2014-1-23在看下文之前,首先要确认意见事情,就是你是如何启动tomcat的,我们在平时的开发环境当中,都是通过startup.bat方式启动tomcat的,那么你按照下面的方式,去修改/bin/catalina.bat是没有问题的。但是如果你是生产环境下,我们一般都希望使用windows服务方式去启动tomcat,此时之前修改的配置文件是没有用的。因为windows服务启动tom转载 2016-09-14 14:20:03 · 1441 阅读 · 0 评论 -
介绍Java中的内存泄漏
Java语言的一个关键的优势就是它的内存管理机制。你只管创建对象,Java的垃圾回收器帮你分配以及回收内存。然而,实际的情况并没有那么简单,因为内存泄漏在Java应用程序中还是时有发生的。下面就解释下什么是内存泄漏,它为什么会发生,以及我们如何阻止它的发生。1. 什么是内存泄漏?内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。要想理解这个转载 2016-09-27 15:58:48 · 338 阅读 · 0 评论 -
jmap查看内存使用情况与生成heapdump--转
http://www.webspherechina.net/home/space.php?uid=191&do=blog&id=7572如果想分析自己的JAVA Application时,可以使用jmap程序来生成heapdump文件。例:jmap -heap 1234(1234为进程号)jmap是JDK自带的一个工具,非常小巧方便,其支持参数如下: -he转载 2017-01-12 16:52:35 · 1537 阅读 · 0 评论 -
各种 Java Thread State 第一分析法则
http://www.cnblogs.com/zhengyun_ustc/archive/2013/03/18/tda.html1,线程状态为“waiting for monitor entry”:意味着它 在等待进入一个临界区 ,所以它在”Entry Set“队列中等待。此时线程状态一般都是 Blocked:java.lang.Thread.State:转载 2017-02-27 16:28:26 · 281 阅读 · 0 评论 -
虚拟内存未设置,java应用启动失败
虚拟内存这块接触比较少,反正项目中遇到了一个电脑因为未设置虚拟内存,内存占用75%,打开jvisualvm工具时,打开失败的情况,打开失败后,会生成一个hs_err_pidXXX.log和hs_err_pidXXX.mdmp的文件,具体要看里面的错误信息。设置虚拟内存就可以了。也许是因为jvm必须要使用虚拟内存,也许是因为物理内存达到一定值了,必须要使用虚拟内存。原创 2017-03-27 16:33:30 · 587 阅读 · 0 评论 -
jprofiler9.2注册码
L-Larry_Lau@163.com#23874-hrwpdp1sh1wrn#0620 L-Larry_Lau@163.com#36573-fdkscp15axjj6#25257 L-Larry_Lau@163.com#5481-ucjn4a16rvd98#6038 L-Larry_Lau@163.com#99016-hli5ay1ylizjj#27215 L-Larry_Lau转载 2017-03-13 09:54:11 · 916 阅读 · 0 评论 -
windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
http://blog.csdn.net/hexin373/article/details/8846919我的一个Java程序偶尔会出现cpu占用很高的情况一直不知道什么原因今天终于抽时间解决了系统是win2003jvisualvm 和 jconsole貌似都只能看到总共占用的cpu 看不到每个线程分别占用的cpu呢所转载 2017-03-15 19:26:07 · 7586 阅读 · 9 评论 -
PermGen space错误解决方法
PS:2014-1-23在看下文之前,首先要确认意见事情,就是你是如何启动tomcat的,我们在平时的开发环境当中,都是通过startup.bat方式启动tomcat的,那么你按照下面的方式,去修改/bin/catalina.bat是没有问题的。但是如果你是生产环境下,我们一般都希望使用windows服务方式去启动tomcat,此时之前修改的配置文件是没有用的。因为windows服务启动t转载 2016-01-13 22:03:46 · 311 阅读 · 0 评论 -
java 大数据处理之内存溢出解决办法
一、内存溢出类型1、java.lang.OutOfMemoryError: PermGen spaceJVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,转载 2016-01-08 22:56:51 · 4419 阅读 · 0 评论 -
Java中典型的内存泄露问题和解决方法
这篇文章主要介绍了Java中典型的内存泄露问题和解决方法,典型的内存泄露例子是一个没有实现hasCode和equals方法的Key类在HashMap中保存的情况,可以通过实现Key类的equals和hasCode方法解决这种内存泄漏问题,需要的朋友可以参考下Q:在Java中怎么可以产生内存泄露?A:Java中,造成内存泄露的原因有很多种。典型的例子是一个没有实现hasCode和equa转载 2016-01-08 15:34:47 · 313 阅读 · 0 评论 -
使用Memory Analyzer tool(MAT)分析内存泄漏(一)
前言的前言写blog就是好,在大前提下可以想说什么写什么,不像投稿那么字字斟酌。上周末回了趟成都办事,所以本文来迟了。K117从达州经由达成线往成都方向走的时候,发现铁路边有条河,尽管我现在也不知道其名字,但已被其深深的陶醉。河很宽且水流平缓,河边山丘森林密布,民房星星点点的分布在河边,河里偶尔些小船。当时我就在想,在这里生活是多么的惬意,夏天还可以下去畅游一番,闲来无事也可垂钓。唉,越来转载 2016-02-27 15:18:51 · 331 阅读 · 0 评论 -
java内存溢出和内存泄露
虽然jvm可以通过GC自动回收无用的内存,但是代码不好的话仍然存在内存溢出的风险。最近在网上搜集了一些资料,现整理如下: —————————————————————————————————————————— 一、为什么要了解内存泄露和内存溢出? 1、内存泄露一般是代码设计存在缺陷导致的,通过了解内存泄露的场景,可以避免不必要的内存溢出和提高自己的代码编写水平; 2、转载 2016-02-27 14:26:59 · 302 阅读 · 0 评论 -
Java编程中“为了性能”尽量要做到的一些地方
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于转载 2014-10-30 18:45:44 · 439 阅读 · 0 评论 -
读书笔记-深入理解JVM虚拟机-1.OOM初探
Java堆OOM(Out-Of-Memory)异常运行如下程序,爆出异常 java.lang.OutOfMemoryError: Java heap space[java] view plaincopyprint?/** * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError转载 2015-07-15 12:39:00 · 420 阅读 · 0 评论 -
Shallow heap & Retained heap
所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size. 这是两个在平时不太常见的名词,本文会对这两个名词做一个详细的解释。 Shallow Size 对象自身占用的内存大小,不包括它引用的对象。 针对非数组类型的对象,它的大小就是对象与转载 2016-01-11 15:16:25 · 370 阅读 · 0 评论 -
浅谈java内存泄漏
最近有朋友遇到个问题,tomcat在运行几天后就会报outofmemory,然后就死了,我就稍微总结了下内存泄漏的一些原因,纯属个人理解,欢迎大侠们劈砖:一.字符串问题这个也是一个常见的问题,我们相加两个字符串时有几种方法,如new String("test");、"A"+"B",或用StringBuffer等等,至于应该用哪个,这个是应该有讲究的。下面来总结下:1.new基本不可取,除非转载 2016-01-08 11:31:27 · 590 阅读 · 0 评论 -
java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性能也不好,gc时间消耗的较多。解决这种问题两种方法是,增加参数,-XX:-UseGCOverheadLimit,关闭这个特性,同时增加heap大小,-Xmx1024m。坑填了,but why?OO转载 2016-01-08 11:24:52 · 853 阅读 · 0 评论 -
性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(三)
继 性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(一),性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(二)两篇文章之后,接下来该讲述Perm gen引起的内存泄露问题的分析过程。perm gen我们在上2篇文章中知道,perm gen是个异类,里面存储了类和方法数据(与class loader有转载 2016-01-06 15:23:37 · 1003 阅读 · 0 评论 -
性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(一)
前言在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的。所以找出是什么原因造成OutOfMemoryError非常重要。现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题。如未说明,本文均使用Java 5.0 on Windows XP SP3环境。 为什么用转载 2016-01-06 15:20:12 · 325 阅读 · 0 评论 -
JVM性能调优之生成堆的dump文件
最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:Pe转载 2016-01-07 09:33:20 · 685 阅读 · 0 评论 -
Java heap dump触发和分析(转)
为了分析java应用的内存泄漏,使用thread dump往往解决不了问题。使用jstat【eg:jstat -gcutil pid 1000 5】工具查看运行的java应用的heap size,perm size ,survivor ratio等,当时你无法知道是什么对象把堆填满了。什么是 Java heap dump 首先需要搞懂什么是java heap,java he转载 2016-01-07 09:49:07 · 2260 阅读 · 0 评论 -
JVM GC日记和内存DUMP参数配置
转载地址:http://www.myexception.cn/software-architecture-design/421506.htmlJVM GC日志和内存DUMP参数配置在JVM出现内存溢出或泄露时,为便于排查和定位,需要JVM的启动上增加相应的参数。主要是GC日志和内存DUMP参数。详细如下。 1.GC日志和内存DUMP参数配置 本文参数配置基于转载 2017-12-11 15:09:40 · 1535 阅读 · 0 评论