如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe。JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数。再通过JDK提供的工具的统计结果,就比较容易理解这些内存分配的理论知识。运行环境是win7 32位操作系统,JDK1.7.0_60版本。可以发现:堆内存、新生代内存、老年代内存、永久代内存,都有一个初始内存,还有一个最大内存。...
分类:
其他好文 时间:
2014-09-17 21:56:42
阅读次数:
377
一:Java技术体系模块图二:JVM内存区域模型1.方法区 也称"永久代” 、“非堆” ,"perm", 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方....
分类:
其他好文 时间:
2014-09-12 11:31:43
阅读次数:
191
先看一眼JVM虚拟机运行时的内存模型:
1.方法区 Perm(永久代、非堆)
2.虚拟机栈
3.本地方法栈 (Native方法)
4.堆
5.程序计数器
1 首先的问题是:jvm如何知道那些对象需要回收 ?
目前两种标识算法、三种回收算法、两种清除算法、三种收集器
引用计数法
每个对象上都有一个引用计数,对象每被引用一次,引...
分类:
其他好文 时间:
2014-09-07 21:13:05
阅读次数:
363
JVM参数调优,这是很头痛的问题,设置的不好,JVM不断执行FullGC,导致整个系统变得很慢.
要想配置好JVM参数,需要对年轻代、年老代、救助空间和永久代有一定了解,还要了解jvm内存管理逻辑,最终还要根据自己的应用来做调整。
jvm参数调优给出以下几条经验:
1:建议用64位操作系统,Linux下64位的jdk比32位jdk要慢一些,但是吃得内存更多,吞吐量更大。
2...
分类:
其他好文 时间:
2014-09-05 16:16:21
阅读次数:
684
注意:垃圾回收回收的是无任何应用对象占据的内存空间,而不是对象本身在jvm中堆空间划分为三个代:年轻代(Young Generation)、年老代(Old Generation)和永久代(Permanent Generation)。年轻代和年老代是存储动态产生的对象。永久带主要是存储的是java的类...
分类:
其他好文 时间:
2014-08-29 17:56:38
阅读次数:
192
一:Java技术体系模块图二:JVM内存区域模型1.方法区也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。运行时常...
分类:
其他好文 时间:
2014-08-25 19:11:44
阅读次数:
267
Java运行时涉及到的区域几个基本概念:1.Java对象 2.Java方法 3.一个编译好的类,以class文件的形式出现4.Java的本地方法 5.线程私有和线程共有一、方法区(永久代) 和 堆(heap) 这两个区域是线程共有的,供所有线程使用。所以,对存放在这两个地方的资源进行操作...
分类:
编程语言 时间:
2014-08-02 18:04:13
阅读次数:
276
很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾手机,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是在新生代中,常规应用进行一次垃圾收集一般可以回收70%~90%的空间,而永久..
分类:
其他好文 时间:
2014-07-29 15:42:19
阅读次数:
246