本文作者:ImportNew -储晓颖最近举行了两次大型的JVM编程语言的投票 (投票1, 投票2)。这些投票产生了一些非常有趣的数据。由于投票者来自不同的阵营,两次投票结果之间也稍有不同。在我参与的投票中Clojure进展非常顺利(领先Scala和Groovy),因为投票者中很多来自喜爱LISP的HackerNews团体。另一场DZone的投票也吸引了一长队的投票者......
-
-
G1 垃圾收集器之对象分配过程(转载)
原文出处:占小狼G1的年轻代由edenregion和survivorregion两部分组成,新建的对象(除了巨型对象)大部分都在edenregion中分配内存,如果分配失败,说明edenregion已经被全部占满,这时会触发一次younggc,回收edenregion的垃圾对象,释放空间,满足当前的分配需求。小对象G1默认启用了UseTLAB优化,创建对象(小对象)时,优先从TLAB中分配内存,如......1,007 0 2018-01-23 17:24
-
JVM 堆内存和非堆内存(转载)
原文出处:xstarcd堆和非堆内存按照官方的说法:“Java虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heapmemory)”。JVM主要管理两种类型的内存:堆和非堆。HeapmemoryCodeCacheEdenSpaceSurvivorSpaceTenuredGenn......868 0 2018-01-08 19:32
-
Java虚拟机工作原理
首先我想从宏观上介绍一下Java虚拟机的工作原理。从最初的我们编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(javac或ECJ)将.java文件编译为Java字节码文件,然后JRE加载Java字节码文件,载入系统分配给JVM的内存区,然后执行引擎解释或编译类文件,再由即时编译器将字节码转化为机器码。主要介绍下图中的类加载器和运行时数据区两个......1,355 0 2017-12-07 19:02