`
高成锋
  • 浏览: 52745 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JVM学习总结二

    博客分类:
  • java
阅读更多

4. jmap

这个是用来查看jvm当前的heap dump的。可以看出当前jvm中各种对象的数量,所占空间等等。

尤其值得一提的是这个命令可以到处一份binary heap dumpbin文件,这个文件能够直接用

Eclipse Memory Anayliser来分析,并找出潜在的内存泄漏的地方。

描述 :输出给定 java 进程所有的内存使用信息。 

使用: 

    jmap [ option ] pid 

    jmap [ option ] executable core 

    jmap [ option ] [server-id@]remote-hostname-or-IP 

 

参数如下:
-heap:打印jvm heap的情况
-histo打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
-histolive 同上,但是只答应存活对象的情况
-permstat打印permanent generation heap情况

<no option> 

没有可选项时,会输出所有共享的对象映射。 

开始地址,映射大小,全路径。 

直接 jmap pid得到如下结果: 

0x08048000     46K  /work/ProgramFiles/jdk1.6.0_14/bin/java 

0xb6763000     74K  /work/ProgramFiles/jdk1.6.0_14/jre/lib/i386/libzip.so 

0xb6774000     41K  /lib/tls/i686/cmov/libnss_files-2.9.so 

0xb6780000     37K  /lib/tls/i686/cmov/libnss_nis-2.9.so 

0xb678b000     29K  /lib/tls/i686/cmov/libnss_compat-2.9.so 

是加载的文件的信息

jmap -heap pid : 

查看堆的配置和大当前各个区块的使用情况,如伊甸区、老年代,永久代。可以用此来判断内存目前的使用情况以及垃圾回收情况: 

jmap -histo 选项 

内存使用的柱状图,包含每个类,对象使用的内存大小。 VM 内部的类名以 前缀开头。 

jmap -permstat 选项 

输出所有类装载器在堆里产生的对象 

包括每个装载器的名字,活跃,地址,父装载器,和其总共加载的类大小。 

jmap -permstat pid

-------------------

5. netstat

通过这个命令可以看到linux系统当前在各个端口的链接状态,比如查看数据库连接数等等

6. jinfo

描述:输出给定 java 进程所有的配置信息。包括 java 系统属性和 jvm 命令行标记等。 

用法: 

jinfo [ option ] pid 

jinfo [ option ] executable core 

jinfo [ option ] [server-id@]remote-hostname-or-IP 

例子: 

jinfo pid 

这个命令包含了 JDK 和 JVM 运行起来时的一些属性。

7. jstatd

启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099

实例:jstatd -J-Djava.security.policy=my.policy

my.policy文件需要自己建立,内如如下:

grant codebase "file:$JAVA_HOME/lib/tools.jar" {

 permission java.security.AllPermission;

};

这是安全策略文件,因为jdkjvm做了jaas的安全检测,所以我们必须设置一些策略,使得jstatd被允许作网络操作

8. jps

列出所有的jvm实例

实例:

jps

列出本机所有的jvm实例

jps 192.168.0.77

列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为1099

(前提是远程服务器提供jstatd服务)

输出内容如下:

jones@jones:~/data/ebook/java/j2se/jdk_gc$ jps

6286 Jps

6174  Jstat

9. jconsole

一个图形化界面,可以观察到java进程的gcclass,内存等信息。虽然比较直观,但是个人还是比较倾向于使用jstat命令(在最后一部分会对jstat作详细的介绍)

<!--EndFragment-->
分享到:
评论

相关推荐

    jvm自己学习总结

    jvm自己学习总结,对JVM的工作原理进行记录学习笔记

    JVM学习资料+笔记

    二、JVM诊断 1. JMX(Java Management Extensions):提供管理和监控JVM的工具,可以查看运行时的内存、线程、类装载情况等。 2. jstat:命令行工具,用于收集JVM的各种统计信息,如垃圾收集、类装载、内存使用等...

    JVM调优总结.pdf

    本文档总结了JVM调优的基础知识和一些核心概念,旨在帮助开发者更好地掌握Java程序的性能优化。 首先,文档提到了Java中的数据类型分为基本类型和引用类型。基本类型的变量存储的是原始数据值,而引用类型的变量...

    JVM调优总结.rar

    二、JVM参数设置 调优涉及大量JVM启动参数的调整,主要包括: 1. -Xms和-Xmx:设置堆内存的初始大小和最大大小,避免频繁的动态扩展导致性能下降。 2. -XX:NewRatio:年轻代与老年代的比例,影响垃圾收集频率。 3....

    JVM调优总结.doc

    "JVM调优总结" JVM调优是一种非常重要的技术,能够帮助我们提高Java应用程序的性能和稳定性。在这篇文章中,我们将...只有通过不断的学习和实践,我们才能更好地掌握JVM调优技术,提高Java应用程序的性能和稳定性。

    个人总结之—JVM性能调优实战

    - **案例二:大数据处理平台调优**:大数据处理平台往往需要处理海量数据,通过对JVM内存配置、垃圾回收机制等方面的优化,提升数据处理速度。 - **案例三:分布式系统调优**:分布式系统面临着网络延迟、节点通信等...

    jvm瓶颈定位 java jvm 学习

    2. **JVM内存结构** - 堆内存:所有对象实例都在堆中分配,分为新生代和老年代,用于垃圾回收。 - 方法区:存储类信息、常量、静态变量等。 - 栈内存:每个线程都有一个独立的栈,用于存储局部变量、方法调用等。...

    java与jvm知识总结

    2. **方法区**:存储类信息、常量、静态变量等数据。在Java 8之后,被元空间(Metaspace)取代,元空间主要存储类的元数据。 3. **栈**:每个线程都有一个独立的栈,用于存储局部变量、方法调用信息等。每当执行一...

    jvm的基础知识总结

    JVM(Java虚拟机)是运行Java程序的核心,它负责解释执行Java字节码。...随着Java版本的更新,JVM也不断地引入新的特性和优化,学习和掌握JVM的基础知识对于Java开发者来说是一项基础且重要的任务。

    JVM调优总结

    2. **垃圾收集器选择**:JVM提供了多种垃圾收集器,如Serial、Parallel、CMS、G1等。每种GC有其优缺点,如Serial适合单线程环境,Parallel提升并行度,CMS适用于响应时间优先,G1则力求平衡暂停时间和吞吐量。选择...

    Java虚拟机JVM性能优化(一):JVM知识总结

    本篇文章将对JVM的基础知识进行总结,并探讨如何通过调整JVM参数来提升性能。 首先,我们需要了解JVM的主要组成部分:类装载器、运行时数据区、执行引擎、本地方法接口和本地方法库。其中,类装载器负责加载、验证...

    JVM调优总结与ava虚拟机:JVM高级特性与最佳实践(最新第二版)

    《JVM调优总结》与《Java虚拟机:JVM高级特性与最佳实践》是两本深入探讨Java虚拟机(JVM)的书籍,对于Java开发者来说,它们提供了丰富的知识和实践经验,尤其对于想要理解JVM工作原理以及进行性能优化的专业人士更...

    JVM调优world总结

    - 学习更多关于JVM、Java性能调优的书籍和在线资源,如《Java性能优化权威指南》等。 总之,JVM调优是一个系统工程,需要从多个维度进行深入理解和实践,才能达到理想的优化效果。同时,持续关注Java和JVM的新特性...

    JVM入门实战/arthas实战/垃圾回收算法/垃圾回收器/jvm内存模型分析

    第一节:学习JVM的意义和目标 1.1 意义: 1.2 目标: 第二节:JVM内存模型 1.1 概念 1.2 JVM内存模型 1.3 Heap堆内存模型 第三节:定位垃圾对象的依据 1.1 引用计数法 1.2 可达性算法 第四节:垃圾回收算法 ...

    JVM

    Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境,使得Java代码能够在不同的操作系统上“一次编写,...通过学习JVM源码,我们可以更深入地了解其内部细节,从而成为更出色的Java程序员。

    JVM学习笔记核心知识点整理

    ### JVM学习笔记核心知识点整理 #### 一、引言与背景 随着软件开发技术的不断发展,Java作为一种广泛应用的编程语言,其背后的核心技术——Java虚拟机(JVM)的重要性日益凸显。掌握JVM不仅可以帮助开发者更好地理解...

    jvmjava,java实现的JVM。.zip

    《Java实现的JVM——深入...总结,"jvmjava"项目是一个极好的学习资源,它使开发者有机会亲手构建一个JVM,从底层理解Java应用程序的运行机制。无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的技术水平。

Global site tag (gtag.js) - Google Analytics