LinkNemo

  • 随遇而安

    JVM语言“三巨头” – Scala Clojure Groovy

    本文作者:ImportNew -储晓颖最近举行了两次大型的JVM编程语言的投票 (投票1, 投票2)。这些投票产生了一些非常有趣的数据。由于投票者来自不同的阵营,两次投票结果之间也稍有不同。在我参与的投票中Clojure进展非常顺利(领先Scala和Groovy),因为投票者中很多来自喜爱LISP的HackerNews团体。另一场DZone的投票也吸引了一长队的投票者(主要是dzone的Java开发者团体),最受欢迎的是Groovy,其次是Scala,Coljure紧随其后。两个投票结果都表现出来的相同点是JVM语言“三巨头”(Scala、Clojure和Groo......
    2018/01/26 17:21:32发表 111赏阅 0点评
  • 随遇而安

    G1 垃圾收集器之对象分配过程(转载)

    原文出处:占小狼G1的年轻代由edenregion和survivorregion两部分组成,新建的对象(除了巨型对象)大部分都在edenregion中分配内存,如果分配失败,说明edenregion已经被全部占满,这时会触发一次younggc,回收edenregion的垃圾对象,释放空间,满足当前的分配需求。小对象G1默认启用了UseTLAB优化,创建对象(小对象)时,优先从TLAB中分配内存,如果分配失败,说明当前TLAB的剩余空间不满足分配需求,则调用allocate_new_tlab方法重新申请一块TLAB空间,之前都是从eden区分配,G1需要从edenregion中分配,不过也有可能......
    2018/01/23 17:24:33发表 33赏阅 0点评
  • 随遇而安

    JVM 堆内存和非堆内存(转载)

    原文出处:xstarcd堆和非堆内存按照官方的说法:“Java虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heapmemory)”。JVM主要管理两种类型的内存:堆和非堆。HeapmemoryCodeCacheEdenSpaceSurvivorSpaceTenuredGennon-heapmemoryPermGennativeheap?(Iguess)堆内存Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。......
    2018/01/08 19:32:00发表 31赏阅 0点评
  • 随遇而安

    Java虚拟机工作原理

    首先我想从宏观上介绍一下Java虚拟机的工作原理。从最初的我们编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(javac或ECJ)将.java文件编译为Java字节码文件,然后JRE加载Java字节码文件,载入系统分配给JVM的内存区,然后执行引擎解释或编译类文件,再由即时编译器将字节码转化为机器码。主要介绍下图中的类加载器和运行时数据区两个部分。类加载类加载指将类的字节码文件(.class)中的二进制数据读入内存,将其放在运行时数据区的方法区内,然后在堆上创建java.lang.Class对象,封装类在方法区内的数据结构。类加载的最终产......
    2017/12/07 19:02:56发表 44赏阅 0点评
  • CODY

    JVM概要二

    一.JVM概念Java虚拟机,JAVA程序自己独立运行环境; 有自己完善的硬件架构,如类加载器、堆栈、寄存器等,还具有相应的指令系统二.JVM原理Java源文件经javac编译器,编译成字节码程序,通过JVM执行引擎将每一条指令翻译成不同平台机器码,通过特定平台运行。java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。这也是java能跨平台,“一次编译,到处运行”的原因 原理图: 三.JVM组成主要由类加载器子系统、运行时数据区(内存空间)、执行引擎以及与本地方法接口等组成。模型:   四.JVM组成--类加载器&nbs......
    2017/09/01 17:28:11发表 262赏阅 2点评
  • CODY

    JVM概要一

    一.JVM/JDK/JRE的区别 JDKJavaDevelopmentToolKit(Java开发工具包),JDK是整个JAVA的核心;包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具(javac/java/jdb等)   和Java基础的类库(即JavaAPI包括rt.jar)。三个版本:·SE(J2SE)标准版,是我们通常用的一个版本·EE(J2EE)企业版,使用这种JDK开发J2EE应用程序·ME(J2ME)主要用于移动设备、嵌入式设备上的java应用程序 JREJava Runtime&n......
    2017/09/01 13:02:37发表 272赏阅 1点评
  • Nemo

    一次 JVM 调优的笔记

    1.JVMTuning基础知识1.1Java堆结构Java堆可以处于物理上不连续的内存空间上,只要逻辑上是连续的即可。Java堆就是各种对象分配和保存的内存空间,线程间共享。Java堆分为Eden区,Survivor区,tenured区和Permanent区,如下图所示。Java堆的分配原则如下:Java堆分布如下图所示,新的类的实例大部分在Eden(之所以用Eden这个词也就是表示初创起始的意思)区分配。Eden区满的时候,或者需要GC时,依然存活的对象将被复制到Survivor区,一共有两个survivor区,当一个survivor区满时,依然存活的对象将被复制到另一个survivor区。......
    2016/11/27 13:10:23发表 347赏阅 0点评

最新点击

热门人物

热门标签

回到顶部