当前位置: 首页 > news >正文

建设银行网站怎么看交易记录沈阳网站建设设计公司

建设银行网站怎么看交易记录,沈阳网站建设设计公司,合肥做网站公司哪家好,有趣的网站小游戏网址jdk安装后会自带一些小工具#xff0c;jmap命令(Java Memory Map)是其中之一。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 jmap命令可以获得运行中的jvm的堆的快照#xff0c;从而可以离线分析堆#xff0c;以检查内存泄漏jmap命令(Java Memory Map)是其中之一。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 jmap命令可以获得运行中的jvm的堆的快照从而可以离线分析堆以检查内存泄漏检查一些严重影响性能的大对象的创建检查系统中什么对象最多各种对象所占内存的大小等等。可以使用jmap生成Heap Dump。  java memory direct memory直接内存 jvm memory(MaxPermSize Xmx) 1)直接内存跟堆 直接内存则是一块由程序本身管理的一块内存空间它的效率要比标准内存池要高主要用于存放网络通信时数据缓冲和磁盘数据交换时的数据缓冲。  DirectMemory容量可以通过 -XX:MaxDirectMemorySize指定如果不指定则默认为与Java堆的最大值-Xmx指定一样。但是在OSX上的最新版本的 JVM对直接内存的默认大小进行修订改为“在不指定直接内存大小的时默认分配的直接内存大小为64MB”可以通过 -XX:MaxMemorySize来显示指定直接内存的大小。 2)堆(Heap)和非堆(Non-heap)内存 按照官方的说法“Java 虚拟机具有一个堆堆是运行时数据区域所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。 可以看出JVM主要管理两种类型的内存堆和非堆。简单来说堆就是Java代码可及的内存是留给开发人员使用的非堆就是JVM留给自己用的 所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 3)栈与堆 栈解决程序的运行问题即程序如何执行或者说如何处理数据堆解决的是数据存储的问题即数据怎么放、放在哪儿。 在Java中一个线程就会相应有一个线程栈与之对应这点很容易理解因为不同的线程执行逻辑有所不同因此需要一个独立的线程栈。而堆则是所有线程共享的。栈因为是运行单位因此里面存储的信息都是跟当前线程或程序相关信息的。包括局部变量、程序运行状态、方法返回值等等而堆只负责存储对象信息。 Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等 指令建立它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的堆的优势是可以动态地分配内存大小生存期也不必事先告诉编译器因为它是在运行时 动态分配内存的Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是由于要在运行时动态分配内存存取速度较慢。 栈的优势是存取速度比堆要快仅次于寄存器栈数据可以共享。但缺点是存在栈中的数据大小与生存期必须是确定的缺乏灵活性。栈中主要存放一些基本类 型的变量,int, short, long, byte, float, double, boolean, char和对象句柄。线程占用大小在MaxPermSize中进行内存申请和分配 什么是堆Dump 堆Dump是反应Java堆使用情况的内存镜像其中主要包括系统信息、虚拟机属性、完整的线程Dump、所有类和对象的状态等。 一般在内存不足、GC异常等情况下我们就会怀疑有内存泄露。这个时候我们就可以制作堆Dump来查看具体情况。分析原因。 基础知识 Java虚拟机的内存组成以及堆内存介绍 Java GC工作原理 常见内存错误 outOfMemoryError 年老代内存不足。 outOfMemoryError:PermGen Space 永久代内存不足。 outOfMemoryError:GC overhead limit exceed 垃圾回收时间占用系统运行时间的98%或以上。 一、介绍 打印出某个java进程使用pid内存内的所有‘对象’的情况如产生那些对象及其数量。它的用途是为了展示java进程的内存映射信息或者堆内存详情。  可以输出所有内存中对象的工具甚至可以将VM 中的heap以二进制输出成文本。 jmap -heap:formatb pid   bin格式  javaversion 1.5jmap -dump:formatb,filefilename pid javaversion 1.6 jmap -dump:formatb,fileoutfile 3024可以将3024进程的内存heap输出出来到outfile文件里再配合MAT内存分析工具(Memory Analysis Tool或与jhat (Java Heap Analysis Tool)一起使用能够以图像的形式直观的展示当前内存是否有问题。 64位机上使用需要使用如下方式 jmap -J-d64 -heap pid 二、命令格式 SYNOPSIS jmap [ option ] pid  (to connect to remote debug server)    jmap [ option ] executable core  (to connect to remote debug server)    jmap [ option ] [server-id]remote-hostname-or-IP  (to connect to remote debug server)    where option is one of: none to print same info as Solaris pmap -heap to print java heap summary -histo[:live] to print histogram of java object heap; if the live suboption is specified, only count live objects -permstat to print permanent generation statistics -finalizerinfo to print information on objects awaiting finalization -dump:dump-options to dump java heap in hprof binary format dump-options: live dump only live objects; if not specified,all objects in the heap are dumped. formatb binary format filefile dump heap to file Example: jmap -dump:live,formatb,fileheap.bin pid -F force. Use with -dump:dump-options pid or -histo to force a heap dump or histogram when pid does not respond. The live suboption is not supported in this mode. -h | -help to print this help message -Jflag to pass flag directly to the runtime system 参数如下 -heap打印jvm heap的情况 -histo打印jvm heap的直方图。其输出信息包括类名对象数量对象占用大小。 -histolive 同上但是只答应存活对象的情况 -permstat打印permanent generation heap情况 参数说明 1)、options  executable     Java executable from which the core dump was produced.(可能是产生core dump的java可执行程序) core 将被打印信息的core dump文件 remote-hostname-or-IP 远程debug服务的主机名或ip server-id 唯一id,假如一台主机上多个远程debug服务用此选项参数标识服务器 2基本参数 no option 如果使用不带选项参数的jmap打印共享对象映射将会打印目标虚拟机中加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径全称。这与Solaris的pmap工具比较相似。-dump:[live,]formatb,filefilename 使用hprof二进制形式,输出jvm的heap内容到文件, live子选项是可选的假如指定live选项,那么只输出活的对象到文件.  -finalizerinfo 打印正等候回收的对象的信息.-heap 打印heap的概要信息GC使用的算法heap的配置及wise heap的使用情况.-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.  -permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.  -F 强迫.在pid没有响应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.  -h | -help 打印辅助信息  -Jflag 传递参数给jmap启动的jvm.  pid 需要被打印配相信息的java进程id,可以用jps查问 从安全点日志看从Heap Dump开始整个JVM都是停顿的考虑到IO虽是写到Page Cache但或许会遇到background flush几G的Heap可能产生几秒的停顿在生产环境上执行时谨慎再谨慎。 live的选项实际上是产生一次Full GC来保证只看还存活的对象。有时候也会故意不加live选项看历史对象。 Dump出来的文件建议用JDK自带的VisualVM或Eclipse的MAT插件打开对象的大小有两种统计方式 本身大小(Shallow Size)对象本来的大小。保留大小(Retained Size) 当前对象大小 当前对象直接或间接引用到的对象的大小总和。 看本身大小时占大头的都是char[] ,byte[]之类的没什么意思用jmap -histo:live pid 看的也是本身大小。所以需要关心的是保留大小比较大的对象看谁在引用这些char[], byte[]。 (MAT能看的信息更多但VisualVM胜在JVM自带用法如下命令行输入jvisualvm文件-装入-堆Dump检查 - 查找20保留大小最大的对象就会触发保留大小的计算然后就可以类视图里浏览按保留大小排序了) 三、使用实例 1、jmap -heap pid 展示pid的整体堆信息 #ps -ef|grep tomcat  #获取tomcat的pid [rootlocalhost ~]# jmap -heap 27900 Attaching to process ID 27900, please wait... Debugger attached successfully. Client compiler detected. JVM version is 20.45-b01 using thread-local object allocation. Mark Sweep Compact GC Heap Configuration: #堆内存初始化配置MinHeapFreeRatio 40 #-XX:MinHeapFreeRatio设置JVM堆最小空闲比率 MaxHeapFreeRatio 70 #-XX:MaxHeapFreeRatio设置JVM堆最大空闲比率 MaxHeapSize 100663296 (96.0MB) #-XX:MaxHeapSize设置JVM堆的最大大小NewSize 1048576 (1.0MB) #-XX:NewSize设置JVM堆的‘新生代’的默认大小MaxNewSize 4294901760 (4095.9375MB) #-XX:MaxNewSize设置JVM堆的‘新生代’的最大大小OldSize 4194304 (4.0MB) #-XX:OldSize设置JVM堆的‘老生代’的大小NewRatio 2 #-XX:NewRatio:‘新生代’和‘老生代’的大小比率SurvivorRatio 8 #-XX:SurvivorRatio设置年轻代中Eden区与Survivor区的大小比值PermSize 12582912 (12.0MB) #-XX:PermSizevalue:设置JVM堆的‘持久代’的初始大小 MaxPermSize 67108864 (64.0MB) #-XX:MaxPermSizevalue:设置JVM堆的‘持久代’的最大大小 Heap Usage: New Generation (Eden 1 Survivor Space): #新生代区内存分布包含伊甸园区1个Survivor区capacity 30212096 (28.8125MB)used 27103784 (25.848182678222656MB)free 3108312 (2.9643173217773438MB)89.71169693092462% used Eden Space: #Eden区内存分布capacity 26869760 (25.625MB)used 26869760 (25.625MB)free 0 (0.0MB)100.0% used From Space: #其中一个Survivor区的内存分布capacity 3342336 (3.1875MB)used 234024 (0.22318267822265625MB)free 3108312 (2.9643173217773438MB)7.001809512867647% used To Space: #另一个Survivor区的内存分布capacity 3342336 (3.1875MB)used 0 (0.0MB)free 3342336 (3.1875MB)0.0% used tenured generation: #当前的Old区内存分布 capacity 67108864 (64.0MB)used 67108816 (63.99995422363281MB)free 48 (4.57763671875E-5MB)99.99992847442627% used Perm Generation: #当前的 “持久代” 内存分布capacity 14417920 (13.75MB)used 14339216 (13.674942016601562MB)free 78704 (0.0750579833984375MB)99.45412375710227% used新生代的内存回收就是采用空间换时间的方式 如果from区使用率一直是100% 说明程序创建大量的短生命周期的实例使用jstat统计一下jvm在内存回收中发生的频率耗时以及是否有full gc使用这个数据来评估一内存配置参数、gc参数是否合理 多次ygc后如果s区没变化这种情况不出意外就是担保了可以jstat持续观察下 [rootlocalhost ~]# jmap -heap 4951 Attaching to process ID 4951, please wait... Debugger attached successfully. Client compiler detected. JVM version is 20.45-b01 using thread-local object allocation. Parallel GC with 1 thread(s) Heap Configuration: MinHeapFreeRatio 40 MaxHeapFreeRatio 70 MaxHeapSize 734003200 (700.0MB) NewSize 314572800 (300.0MB) MaxNewSize 314572800 (300.0MB) OldSize 4194304 (4.0MB) NewRatio 2 SurvivorRatio 8 PermSize 104857600 (100.0MB) MaxPermSize 104857600 (100.0MB) Heap Usage: PS Young Generation Eden Space: capacity 235929600 (225.0MB) used 169898184 (162.02753448486328MB) free 66031416 (62.97246551513672MB) 72.01223754882812% used From Space: capacity 39321600 (37.5MB) used 0 (0.0MB) free 39321600 (37.5MB) 0.0% used To Space: capacity 39321600 (37.5MB) used 0 (0.0MB) free 39321600 (37.5MB) 0.0% used PS Old Generation capacity 419430400 (400.0MB) used 0 (0.0MB) free 419430400 (400.0MB) 0.0% used PS Perm Generation capacity 104857600 (100.0MB) used 14140688 (13.485610961914062MB) free 90716912 (86.51438903808594MB) 13.485610961914062% used 根据打印的结果默认存活区与eden比率28 1查看eden区225M 2两个存活区大小都为37.5M 3年轻代大小300M 4老年代大小400M 5持久代大小100M 6最大堆内存大小年轻代大小老年代大小700M 7java应用程序占用内存大小最大堆内存大小持久代大小700M100M800M 对应java参数在tomcat的启动文件里配置如下 JAVA_OPTS-Xms700m -Xmx700m -Xmn300m -Xss1024K -XX:PermSize100m -XX:MaxPermSize100 -XX:UseParallelGC -XX:ParallelGCThreads1 -XX:PrintGCTimeStamps-XX:PrintGCDetails -Xloggc:/opt/logs/gc.log -verbose:gc -XX:DisableExplicitGC 注意参数配置时上述参数为一行。 各参数意义 XmsXmxXmnXss-XX:PermSize-XX:MaxPermSizeNewRatio 2   表示新生代e2s老年代不含永久区12指新生代占整个堆的1/3SurvivorRatio 8  表示2个Seden28一个S占年轻代的1/102、jmap -histo pid 展示class的内存情况 说明instances实例数、bytes大小、classs name类名。它基本是按照使用使用大小逆序排列的。  #instance 是对象的实例个数 #bytes 是总占用的字节数 class name 对应的就是 Class 文件里的 class 的标识 B 代表 byte C 代表 char D 代表 double F 代表 float I 代表 int J 代表 long Z 代表 boolean 前边有 [ 代表数组 [I 就相当于 int[] 对象用 [L 类名表示 从打印结果可看出类名中存在[C、[B等内容 只知道它占用了那么大的内存但不知道由什么对象创建的。下一步需要将其他dump出来使用内存分析工具进一步明确它是由谁引用的、由什么对象。 3、 jmap -histo:live pida.log 可以观察heap中所有对象的情况heap中所有生存的对象的情况。包括对象数量和所占空间大小。 可以将其保存到文本中去在一段时间后使用文本对比工具可以对比出GC回收了哪些对象。 jmap -histo:live 这个命令执行JVM会先触发gc然后再统计信息。 4、dump 将内存使用的详细情况输出到文件 jmap -dump:live,formatb,filea.log pid 说明内存信息dump到a.log文件中。 这个命令执行JVM会将整个heap的信息dump写入到一个文件heap如果比较大的话就会导致这个过程比较耗时并且执行的过程中为了保证dump的信息是可靠的所以会暂停应用。 该命令通常用来分析内存泄漏OOM通常做法是 1首先配置JVM启动参数让JVM在遇到OutOfMemoryError时自动生成Dump文件 -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/path 2然后使用命令 jmap  -dump:formatb,file/path/heap.bin 进程ID  如果只dump heap中的存活对象则加上选项-live。  3然后使用MAT分析工具如jhat命令eclipse的mat插件。 最后在eclipse中安装MAT插件http://www.eclipse.org/mat/然后在eclipse中file----open打开这个文件heap.bin利用现成的OOM工具进行分析。 具体操作方法 首先输入网址http://www.eclipse.org/mat/previousReleases.php然后查看你自己的Eclipse版本我的是Indigo的所以点击链接“Previous Releases”选择Indigo版本的URLhttp://download.eclipse.org/mat/1.1.0/update-site/  用jhat命令可以参看 jhat -port 5000 heapDump 在浏览器中访问http://localhost:5000/ 查看详细信息 四、性能问题查找 转自http://www.cnblogs.com/gaojk/articles/3886503.html 1、发现问题 1、使用uptime命令查看CPU的Load情况Load越高说明问题越严重 2、使用jstat查看FGC发生的频率及FGC所花费的时间FGC发生的频率越快、花费的时间越高问题越严重 2、导出数据在应用快要发生FGC的时候把堆导出来 1、查看快要发生FGC使用命令 jmap -heap pid 会看到如下图结果 以上截图包括了新生代、老年代及持久代的当前使用情况如果不停的重复上面的命令会看到这些数字的变化变化越大说明系统存在问题的可能性越大特别是被红色圈起来的老年代的变化情况。现在看到的这个值为使用率为99%或才快接近的时候就立即可以执行导出堆栈的操作了。 注这是因为我这里没有在jvm参数中使用-server参数也没有指定FGC的阀值在线上的应用中通过会指定CMSInitiatingOccupancyFraction这个参数来指定当老年代使用了百分之多少的时候通过CMS进行FGC当然这个参数需要和这些参数一起使用“-XX:UseConcMarkSweepGC -XX:CMSParallelRemarkEnabled -XX:UseCMSCompactAtFullCollection -XX:UseCMSInitiatingOccupancyOnly”CMSInitiatingOccupancyFraction的默认值是68现在中文站线上的应用都是70也就是说当老年代使用率真达到或者超过70%时就会进行FGC。 2、将数据导出 jmap -dump:formatb,fileheap.bin pid 这个时候会在当前目录以生成一个heap.bin这个二进制文件。 3、通过命令查看大对象 也是使用jmap的命令只不过参数使用-histo 使用jmap -histo pid|less 可得到如下包含对象序号、某个对象示例数、当前对象所占内存的大小、当前对象的全限定名如下图 查看对象数最多的对象并按降序排序输出 执行jmap -histo pid|grep alibaba|sort -k 2 -g -r|less 结果如图 查看占用内存最多的最象并按降序排序输出 执行jmap -histo pid|grep alibaba|sort -k 3 -g -r|less 结果如图 4、数据分析 这个时候将dump出的文件在ECLIPSE中打开使用MAT进行分析ECLIPSE需要先安装MAT插件会展示如下截图 可以从这个图看出这个类java.lang.ref.Finalizer占用500多M表示这其中很多不能够被回对象的对象此时点开hisgogram视图并通过Retained Heap进行排序如下截图 从图中可以看出被线线框圈起来的三个对象占用量非常大那说明这几个大的对象并没有被释放那现在就可以有针对性的从代码中去找这几个对象为什么没有被释放了。 再切换到dominator_tree视图 这里可以看到velocity渲染也存在着问题以及数据库的请求也比较多。 5、优化 优化的思路就是上面所列出来的问题查看实现代码中所存在问题具体问题具体分析。 总结 1.如果程序内存不足或者频繁GC很有可能存在内存泄露情况这时候就要借助Java堆Dump查看对象的情况。 2.要制作堆Dump可以直接使用jvm自带的jmap命令 3.可以先使用jmap -heap命令查看堆的使用情况看一下各个堆空间的占用情况。 4.使用jmap -histo:[live]查看堆内存中的对象的情况。如果有大量对象在持续被引用并没有被释放掉那就产生了内存泄露就要结合代码把不用的对象释放掉。 5.也可以使用 jmap -dump:formatb,filefileName命令将堆信息保存到一个文件中再借助jhat命令查看详细内容 6.在内存出现泄露、溢出或者其它前提条件下建议多dump几次内存把内存文件进行编号归档便于后续内存整理分析。 7.在用cms gc的情况下执行jmap -heap有些时候会导致进程变T因此强烈建议别执行这个命令如果想获取内存目前每个区域的使用状况可通过jstat -gc或jstat -gccapacity来拿到。 Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can’t attach to the process 在ubuntu中第一次使用jmap会报错Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Cant attach to the process这是oracla文档中提到的一个bug:http://bugs.java.com/bugdatabase/view_bug.do?bug_id7050524,解决方式如下 echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope 该方法在下次重启前有效。 永久有效方法 sudo vi /etc/sysctl.d/10-ptrace.conf 编辑下面这行: kernel.yama.ptrace_scope 1 修改为: kernel.yama.ptrace_scope 0 重启系统使修改生效。 windows查看进程号方法 由于任务管理器默认的情况下是不显示进程id号的所以可以通过如下方法加上。 ctrlaltdel打开任务管 理器选择‘进程’选项卡点‘查看’-选择列-加上PID就可以了。当然还有其他很好的选项。  转自https://www.cnblogs.com/kongzhongqijing/articles/3621163.html
http://www.zqtcl.cn/news/426181/

相关文章:

  • 优惠券网站怎么搭建宝安中心区规划
  • 网站建设中怎么添加源码会计常用的三个软件
  • vk汉化网站谁做的购物网站设计公司
  • 门户网站建设平台建设招标项目常挂网站有哪些
  • 公司海外网站建设龙海市城乡规划建设局网站
  • 温州哪里做网站设计seo报名在线咨询
  • 四川住房和城乡建设厅进不去网站网站专题方案
  • 企业网站维护服务做网站设计都需要什么软件
  • jsp电商网站开发教程盐城网站建设制作
  • 企业解决方案网站做企业官网多少钱
  • 宁波网站建设哪家比较好怎麽做网站
  • 诸塈市建设局网站做移动网站开发
  • 南京建站公司网站网站视频源码地址
  • 德阳建设局网站做公众号首图的网站
  • 南阳网站优化渠道山西太原最新消息
  • 发布做网站需求qq群centos wordpress 建站教程
  • 东阳网站建设yw126南京网站改版
  • discuz视频网站模板徐州专业网站建设公司哪家好
  • 网站开发投资成本Wordpress显示成缩略图
  • 网站域名和网站网址吗中东跨境电商平台有哪些
  • 常宁市城乡和住房建设网站怎样加强文化建设
  • 视频网站如何做营销策划模板网站 seo
  • 中企动力做网站好吗网页建设软件
  • 爱站网seo浙江省嘉兴市建设局网站
  • 南宁做网站比较好的公司有哪些贵阳网站上门备案业务
  • 网络叶子 网站推广做一手房做那个网站好
  • 太仓网站建设平台成都家装设计公司排名
  • 现在建一个网站一年费用只要几百元如何建一个免费试用网站
  • 网站没有被收录销售型网站的建设流程及特点
  • 成都58手机微信网站建设名录近一周财经新闻热点