文档章节

一段jvm虚拟机学习代码

雷神雨石
 雷神雨石
发布于 2015/11/19 11:25
字数 353
阅读 16
收藏 0
public class Test1 {
    private static final int _1MB = 1024*1024;

    public Test1() {
    }
    public static void main(String[] args)throws Throwable{
           byte[] allocation1,allocation2,allocation3,allocation4;
        allocation1 = new byte[2 * _1MB];
        allocation2 = new byte[3 * _1MB];
        allocation3 = new byte[3 * _1MB];
        allocation4 = new byte[4 * _1MB];
    }
}

虚拟机配置:

-verbose:gc
-Xms20M
-Xmx20M
-Xmn10M
-XX:+PrintGCDetails
-XX:SurvivorRatio=8
-XX:+UseSerialGC

运行结果

[GC[DefNew: 6292K->534K(9216K), 0.0041814 secs] 6292K->5654K(19456K), 0.0042722 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
Heap
 def new generation   total 9216K, used 8209K [0x00000000f9a00000, 0x00000000fa400000, 0x00000000fa400000)
  eden space 8192K,  93% used [0x00000000f9a00000, 0x00000000fa17eb90, 0x00000000fa200000)
  from space 1024K,  52% used [0x00000000fa300000, 0x00000000fa3859d8, 0x00000000fa400000)
  to   space 1024K,   0% used [0x00000000fa200000, 0x00000000fa200000, 0x00000000fa300000)
 tenured generation   total 10240K, used 5120K [0x00000000fa400000, 0x00000000fae00000, 0x00000000fae00000)
   the space 10240K,  50% used [0x00000000fa400000, 0x00000000fa900020, 0x00000000fa900200, 0x00000000fae00000)
 compacting perm gen  total 21248K, used 2985K [0x00000000fae00000, 0x00000000fc2c0000, 0x0000000100000000)
   the space 21248K,  14% used [0x00000000fae00000, 0x00000000fb0eb8b0, 0x00000000fb0eba00, 0x00000000fc2c0000)
No shared spaces configured.

如果去掉-XX:+UseSerialGC参数 运行结果如下:

[GC [PSYoungGen: 6292K->632K(9216K)] 6292K->5752K(19456K), 0.0036761 secs] [Times: user=0.02 sys=0.03, real=0.00 secs] 
[Full GC [PSYoungGen: 632K->0K(9216K)] [ParOldGen: 5120K->5653K(10240K)] 5752K->5653K(19456K) [PSPermGen: 2891K->2890K(21504K)], 0.0116868 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 
Heap
 PSYoungGen      total 9216K, used 7674K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)
  eden space 8192K, 93% used [0x00000000ff600000,0x00000000ffd7eb88,0x00000000ffe00000)
  from space 1024K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000)
  to   space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)
 ParOldGen       total 10240K, used 5653K [0x00000000fec00000, 0x00000000ff600000, 0x00000000ff600000)
  object space 10240K, 55% used [0x00000000fec00000,0x00000000ff1855b0,0x00000000ff600000)
 PSPermGen       total 21504K, used 2907K [0x00000000f9a00000, 0x00000000faf00000, 0x00000000fec00000)
  object space 21504K, 13% used [0x00000000f9a00000,0x00000000f9cd6f80,0x00000000faf00000)

通过以上运行示例可以看出,我的jvm默认的收集器不是Serial + Serial Old 而是 Parallel Scavenge + Parallel Old,所以当我们学习JVM的时候一定要弄清自己的JVM的默认参数是什么,这只是冰山一角

© 著作权归作者所有

共有 人打赏支持
下一篇: 又回来了
雷神雨石

雷神雨石

粉丝 88
博文 200
码字总数 64286
作品 0
朝阳
程序员
私信 提问
JVM系列第3讲:到底什么是虚拟机?

我们都知道在 Windows 系统上一个软件包装包是 exe 后缀的,而这个软件包在苹果的 Mac OSX 系统上是无法安装的。类似地,Mac OSX 系统上软件安装包则是 dmg 后缀,同样无法在 Windows 系统上...

陈树义
2018/11/09
0
0
成为Java顶尖程序员 ,看这11本书就够了

“学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说...

Java工程师-10
2017/05/23
164
1
[Java学习探讨]为什么学Java虚拟机的Java程序员更值钱?

[Java学习探讨]为什么学Java虚拟机的Java程序员更值钱? 曾经的我经常害怕处理与JVM相关的异常,对JVM的配置参数也一无所知,那时候我天真地认为,JVM的出现本身就是想让程序员屏蔽实现细节,...

原创小博客
2018/07/19
0
0
06-《深度拆解JVM》之JVM是如何处理异常的?

一、问题引入 今天我们来讨论下 Java 虚拟机的异常处理。众所周知,异常处理的两大组成要素是抛出异常和捕获异常。这两大要素共同实现程序控制流的非正常转移。 抛出异常可分为显式和隐式两种...

飞鱼说编程
2018/09/28
0
2
JVM 虚拟机(对象创建,类加载器,执行引擎等),

1.揭开 Java 对象创建的奥秘? 2.class 文件结构详解? 3.详解 Java 类的加载过程? > Java 对象创建,class 文件结构 Java对象模型 。Java对象保存在堆内存中。在内存中,一个Java对象包含三...

desaco
2018/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IOS  学习记录

1.StackView=>IOS 9及以上支持 2.布局方式: AutoLayout / StackView 堆布局 (线性布局) 3.屏幕适配 (资源分辨率、设计分辨率、屏幕分辨率) Size Class技术 可以针对 屏幕的方向进行设置...

萨x姆
34分钟前
0
0
第四次工业革命:自主经济的崛起

https://36kr.com/p/5170370.html

shengjuntu
昨天
3
0
Cloud Native 与12-Factor

12-Factor(twelve-factor),也称为“十二要素”,是一套流行的应用程序开发原则。Cloud Native架构中使用12-Factor作为设计准则。 12-Factor 的目标在于: 使用标准化流程自动配置,从而使...

waylau
昨天
9
0
java多线程2

“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在线程安全问题。这是因为方法内部的变量都是私有造成的。 synchronized 获取的都是对象锁。如果多个线程访问多个...

一滴水穿石
昨天
4
0
今天的学习

1,document.location.href:获取整个url 2,str.split(' '):用字符分割字符串 3,$this->load->library(' '):引用图像处理类 4,$this->load->library(' '):引用Email类 5,特殊访问指针$th......

墨冥
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部