JAVA JVM

1.jconsole是一种集成了上面所有命令功能的可视化工具,可以分析jvm的内存使用情况和线程等信息。

    通过JDK/bin目录下的“jconsole.exe”启动Jconsole后,将自动搜索出本机运行的所有JVM进程,不需要用户使用jps来查询  了,双击其中一个进程即可开始监控。也可以“远程连接服务器,进行远程虚拟机的监控。”

插件中,Visual GC(可视化GC)还是比较好用的,可视化GC可以看到内存的具体使用情况。

2.JAVA内存模型

    Java虚拟机在执行Java程序的过程中,会把它所管理的内存划分为若干个不同的数据区。Java虚拟机运行时数据区域被分为五个区域:堆(Heap)、栈(Stack)、本地方法栈(Native Stack)、方法区(Method Area)、程序计数器(Program Count Register)。

  •     堆

    Java Heap是Java虚拟机管理的内存的最大一块,这块区域随着虚拟机的启动而创建。在实际的运用中,我们创建的对象数组就是存放在堆里面,Java Heap是一块共享的区域,操作共享区域的成员就有了锁和同步。与Java Heap相关的还有Java的垃圾回收机制(GC),Java Heap是垃圾回收器管理的主要区域。程序猿所熟悉的新生代、老生代、永久代的概念就是在堆里面,现在大多数的GC基本都采用了分代收集算法。如果再细致一点,Java Heap还有Eden空间,From Survivor空间,To Survivor空间等。

  •     栈

    相对于Java Heap来讲,Java Stack是线程私有的,她的生命周期与线程相同。Java Stack描述的是Java方法执行时的内存模型,每个方法执行时都会创建一个栈帧(Stack Frame)用语存储局部变量表操作数栈动态链接方法出口等信息。

  •     本地方法栈

    本地方法栈(Native Stack)与Java虚拟机站(Java Stack)所发挥的作用非常相似,他们之间的区别在于虚拟机栈为虚拟机栈执行java方法(也就是字节码)服务,而本地方法栈则为使用到Native方法服务。

  •     方法区
    方法区(Method Area)与堆(Java Heap)一样,是 各个线程共享的内存区域,它用于存储虚拟机加载的 类信息常量静态变量即时编译器编译后的代码等数据。它是存放静态信息的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值