JVM
天高地阔
这个作者很懒,什么都没留下…
展开
-
深入理解JVM--JVM运行时数据区
JVM在执行Java程序的过程中会 把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据Java 虚拟机(JAVA SE 7)规范的规定,Java 虚拟机所管理的内存将会包括以下几个运行时数据区域。1.程序计数器程序计数器是一块较小的内存空间,它可以看作...原创 2017-08-10 23:14:07 · 322 阅读 · 0 评论 -
JVM常见垃圾回收算法
在java内存模型中,程序计数器、虚拟机栈、本地方法栈这些区域每个线程独立拥有,与线程“同生共死”。每个栈帧内存大小是确定可知的,方法或线程结束时自动回收,这些区域不需要考虑内存回收问题。这里的垃圾回收指的是jvm堆内存和方法区的回收,这些区域内存在程序运行期间动态分配、动态回收,需要考虑选择合适的垃圾回收算法。一、如何判断对象是否已经“消亡“1.引用计数法一个对象如果没有任何引用指向它,就可认为...转载 2017-05-18 22:31:01 · 284 阅读 · 0 评论 -
JVM垃圾回收入门
GC如何知道哪些对象是垃圾对象?常用的标记垃圾的算法有两个:引用计数算法引用计数算法,就是每个对象有一个引用计数器,当该对象被引用的时候计数器加1,当引用失效的时候,计数器减1。那么这么做有什么缺点吗?那就是当两个对象相互引用的时候,这两个对象都会无法释放。根搜索算法从根对象开始,所有能被触及的对象都可以认为是“存活的”对象,换句话说,就是“仍然使用的”对象。不能被触及...转载 2017-05-18 22:26:58 · 225 阅读 · 0 评论 -
JVM垃圾回收详解
一、 垃圾收集的意义在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用...转载 2018-04-08 21:12:28 · 817 阅读 · 0 评论 -
Java8内存模型—永久代(PermGen)和元空间(Metaspace)
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛出Stack...转载 2018-04-08 22:21:04 · 162 阅读 · 0 评论 -
JVM性能调优总结
1.堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。典型设置:java-Xmx3550m -Xms3550m -Xmn2g-Xss128k -Xmx3550m:设置JVM最大可用内存为3550M。 -Xms355...转载 2019-02-08 22:53:16 · 123 阅读 · 0 评论 -
JVM调优监控常用工具
命令行工具jps(JVM Process Status Tool),类似于Linux的ps命令,用于列举正在运行的虚拟机进程,并显示虚拟机执行主类(main函数所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID local virtual machine Identifier)。jps [-q] [-mlvV] [<hostid>]-q:只输出LVMID,省略...原创 2019-02-28 22:46:44 · 2007 阅读 · 0 评论