jvmiz9是什么意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jvmiz9是什么意思相关的知识,希望对你有一定的参考价值。
参考技术A 一个JVM实例只存在一个堆内存,是所有线程共享的,堆也是Java内存管理的主要区域。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配 。
但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生,所有的对象都分配在堆上也渐渐变得不是那么“绝对”了。
Java的堆区在JVM启动的时候就被创建,其空间大小也就确定了,是JVM管理的最大的一块内存空间。
- 堆的内存大小是可以调节的。
《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上,它是被视为连续的。
所有的线程共享Java堆,在这里还可以划分为线程私有的缓冲区(Thread Local Allocation Buffer,TLAB)
所有的对象实例及数组都应该在运行时分配在堆上,数组和对象永远不会存储在栈上,因为栈桢中保存的是引用,指向目标对象的或者数组在堆中的地址。
在方法结束后,堆中的对象不会马上被移除,仅仅在垃圾收集的时候才会被移除。
2、堆空间大小的设置
堆:是GC(Garbage Collection,垃圾收集器)执行垃圾回收的重点区域, 堆的内存大小是可以调节的。
堆空间大小的设置
Java堆用于存储Java实例对象,在JVM启动的时候,堆的大小就已经确定好了。
可以通过下面的方式来进行设置
-Xmx :等价于-XX:MaxHeapSize
用来 设置堆空间(年轻代+老年代)的最大内存
-Xms:等价于-XX:InitialHeapSize
用来设置堆空间(年轻代+老年代)的初步内存大小
-X是JVM的运行参数
ms是memory start
一旦堆中的内存大小超过所指定的最大内存,将抛出异常OutOfMemoryError
默认情况:
初始内存大小:物理电脑内存大小的1/64
最大内存大小:物理内存大小的1/4
手动设置
-Xms600m -Xmx600m
设置建议:
在测试的时候,通常将 -Xms和 -Xmx两个参数配置相同的值,其目的是为了能够在Java垃圾回收机制清理完堆区后不需要重新分割计算堆区的大小,从而提高性能。
通过命令在JPS中获取性能的优化的命令
方式一:jps/jstat -gc 进程id
方式二: -XX:+PrintGCDetails
3、堆空间的划分
存储在JVM中的Java对象可以被分为两类
一类是声明周期较短的瞬时对象,这类对象的创建和消亡都非常迅速的
一类是对象的生命周期却非常长,在某些极端的情况下,还能够于JVM的生命周期保存一致的
进一步对堆空间进行划分
年轻代(youngGen):年轻代还可以再进行划分为
Eden空间
Survivor 0空间(from区)
Survivor 1空间(to区)
备注:谁空谁是to区
老年代(OldGen)
Chrono是啥意思??
chrono 慢性的, 长期的chrono- [前缀](=chron-), 表示“时间”之义 参考技术A chrono在古英语和拉丁语中是“时间”的意思 参考技术B [前缀](=chron-), 表示“时间”之义 参考技术C adj.慢性的, 长期的 参考技术D 慢性的, 长期的
以上是关于jvmiz9是什么意思的主要内容,如果未能解决你的问题,请参考以下文章