
jvm
文章平均质量分 92
代老师的编程课
去哪儿网资深架构师,前美团技术专家,16年Java开发经验,MiniTomcat实战课程作者。
展开
-
双重检查锁定及单例模式(ibm社区)
本文来自ibm社区 单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含 Java转载 2014-03-20 19:12:00 · 610 阅读 · 0 评论 -
JVM中的Hello World是如何运行的?
每一个Java开发者都是通过Hello World敲开面向对象世界的大门。但是在一开始,我们考虑的只是这个语言是什么样的,我们如何更好的编码,却很少有人关心他内部是怎么运行的。看下面一个简单的hello world。AD:2013云计算架构师峰会课程资料下载每一个Java开发者都是通过Hello World敲开面向对象世界的大门。但是在一开始,我们考虑的只是转载 2014-03-15 00:16:14 · 577 阅读 · 0 评论 -
淘宝长仁:JVM性能指标的理论极限和衡量方法(TaobaoJVM)
在2013年阿里巴巴集团主办的ADC•阿里技术嘉年华,这是一场专属于的“技术盛宴”,倡导的大会上,51CTO记者有幸采访到了阿里巴巴核心系统部专用计算组负责人 王琤(长仁)老师,基于Taobao JVM的各个基本性能指标的理论极限和衡量方法介绍,以帮助大家认识、评估自己的算法实现是否高效,进一步指导优化工作,以及介绍了淘宝的下一个项目:反图像的搜索引擎技术iflake。AD:2013云计算转载 2014-03-15 00:07:39 · 2408 阅读 · 0 评论 -
你不知道的5个JVM命令行标志
本文是Neward & Associates的总裁Ted Neward为developerworks独家撰稿“你不知道5个……”系列的一篇文章:JVM有数百个命令行选项,在本文中,您将学习如何监控和记录编译器性能、禁用显式垃圾收集(System.gc();)、扩展 JRE 等等。AD:2013云计算架构师峰会课程资料下载本文是Neward & Associa转载 2014-03-15 00:04:25 · 588 阅读 · 0 评论 -
Java虚拟机深入研究
文章来自:http://www.qqread.com/java/w872354600.htmlJava技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:图1 Ja转载 2014-03-14 23:22:48 · 548 阅读 · 0 评论 -
Java里的堆(heap)栈(stack)和方法区(method)
基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 。 方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后从栈空间回收。局部变量 new 出来时,在栈空间和堆空间中分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间区域等转载 2014-03-14 20:49:40 · 693 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记
“编好的机器指令”当然指的是能在CPU上运行的,如果这里我还实现了一个翻译机器:从自己定义的格式指令翻译到CPU指令,那么就可以执行根据自定义格式的代码了……AD:2013云计算架构师峰会课程资料下载在C里面我们想执行一段自己编写的机器指令的方法大概如下:typedef void(*FUNC)(int); char* str = "your code"转载 2014-03-15 00:18:24 · 560 阅读 · 0 评论 -
继承关系的类初始化和实例化的顺序
一切都是java编译器搞得鬼. JVM只是负责解析字节码.字节码虽然不是最原始的原子汇编码,但字节码已经可以完全解释JVM的指令执行过程了。AD:2013云计算架构师峰会课程资料下载就像之前的一个评论.我们学习的是思路. 很多人都知道继承关系的类的初始化和实例化的顺序,但如果忘记了怎么办? 如何找到自己的答案? 又如果遇到的问题是关于泛型的擦除问题,又该转载 2014-03-15 00:22:10 · 573 阅读 · 0 评论 -
Class文件详解 (1)
我们都知道,Java编译器负责将.java文件编译成.class文件,class文件存储的是java字节码,与.java文件无关(只要你愿意写一个编译器,也可以将别的语言写的源代码编译成.class文件),本文准备详细解剖class文件的内部结构,并且把class文件结构读取并显示出来。Class文件的格式由JVM规范规定,一共有以下部分:1. magic number,必须是0xCA转载 2012-02-08 18:21:29 · 518 阅读 · 0 评论 -
深入探讨 Java 类加载器
原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/?ca=drs-tp4608 类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要转载 2013-07-23 18:03:51 · 498 阅读 · 0 评论 -
Java 编程的动态性,第 1 部分: 类和类装入
研究类以及 JVM 装入类时所发生的情况这一有关 Java 编程动态方面的新的系列文章研究了执行 Java 应用程序时幕后所发生的事情。企业 Java专家 Dennis Sosnoski 提供了 Java 二进制类格式以及在 JVM 内部类所发生的情况的内幕。接着,他将讨论类装入问题,其范围涉及从运行简单的 Java 应用程序所需的类的数量到可能造成 J2EE 及类似的复杂转载 2014-03-18 00:07:26 · 595 阅读 · 0 评论 -
Java字节码指令集
字节码指令集 Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。 对于大部分为与数据类型相关的字节码指令,他们的操作码助记符中都有特殊的字符来表明专门为哪种数据类型服务:i代表对int类型的数据操作,l代表long,s代表short,b代表byte,c代表char,f代转载 2013-11-15 19:06:47 · 2066 阅读 · 0 评论 -
JAVA虚拟机体系结构
JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Java虚拟机实例通过调用某个初始类的main()方法来运行转载 2014-03-17 10:59:55 · 524 阅读 · 0 评论 -
Java对象创建方式及JVM对字符串处理
1.Java程序中创建对象的5种常见方式 在讲Jvm对字符串的处理之前,我们先来讲一下,在Java中,最常见的5种创建对象的方式:1)通过关键字new调用构造器创建Java对象,eg :String str = new String("hello");2)通过Class对象的newInstance()方法调用构造器创建Java对象,eg : Class.forName("com.my转载 2013-05-16 23:33:36 · 629 阅读 · 0 评论 -
JVM执行篇:使用HSDIS插件分析JVM代码执行细节
在《Java虚拟机规范》之中,详细描述了虚拟机指令集中每条指令的执行过程、执行前后对操作数栈、对局部变量表的影响等细节。这些细节描述与Sun的早期虚拟机(Sun Classic VM)高度吻合,但随着技术的发展,高性能虚拟机真正的细节实现方式已经渐渐与虚拟机规范所描述产生越来越大的差距,虚拟机规范中的描述逐渐成了虚拟机实现的“概念模型”——即实现只能保证规范描述等效。基于上面的原因,我们分转载 2014-03-15 14:43:16 · 645 阅读 · 0 评论 -
openjdk和jdk的区别与联系
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢?历史上的原因是,openjdk是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开 发,sun jdk7是在openjdk7的基础上发布的,其大部分转载 2014-03-15 10:45:29 · 520 阅读 · 0 评论 -
【深入Java虚拟机】之七:Java编译与JIT编译
编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现。很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目转载 2014-01-19 21:44:05 · 593 阅读 · 0 评论 -
JVM性能优化, Part 5:Java的伸缩性
本文由 ImportNew - ImportNew读者 翻译自 Javaworld。如需转载本文,请先参见文章末尾处的转载要求。ImportNew注: JVM性能优化系列文章前4篇由ImportNew翻译(第一篇,第二篇,第三篇, 第四篇)。本文由新浪微博:吴杰 (@WildJay) 投稿至ImportNew。感谢吴杰! 如果你希望分享好的原创文章或者译文,欢迎投稿到ImportNew。转载 2014-01-23 13:45:03 · 537 阅读 · 0 评论 -
JVM 性能优化, Part 4: C4 垃圾回收
ImportNew注:本文是JVM性能优化 系列-第4篇。前3篇文章请参考文章结尾处的JVM优化系列文章。作为Eva Andreasson的JVM性能优化系列的第4篇,本文将对C4垃圾回收器进行介绍。使用C4垃圾回收器可以有效提升对低延迟有要求的企业级Java应用程序的伸缩性。到目前为止,本系列的文章将stop-the-world式的垃圾回收视为影响Java应用程序伸缩性的一大障碍,而伸缩转载 2013-10-10 17:51:15 · 728 阅读 · 0 评论 -
JVM并发机制的探讨——内存模型、内存可见性和指令重排序
原文出处: oschina并发本来就是个有意思的问题,尤其是现在又流行这么一句话:“高帅富加机器,穷矮搓搞优化”。从这句话可以看到,无论是高帅富还是穷矮搓都需要深入理解并发编程,高帅富加多了机器,需要协调多台机器或者多个CPU对共享资源的访问,因此需要了解并发,穷矮搓搞优化需要编写各种多线程的代码来压榨CPU的计算资源,让它在同一时刻做更多的事情,这个更需要了解并发。在我前一篇转载 2013-10-10 18:22:18 · 718 阅读 · 0 评论 -
JVM性能优化, Part 2 ―― 编译器
ImportNew注:本文是JVM性能优化 – 第2篇 《JVM性能优化, Part 2 ―― 编译器》第一篇 《JVM性能优化, Part 1 ―― JVM简介 》作为JVM性能优化系列文章的第2篇,本文将着重介绍Java编译器,此外还将对JIT编译器常用的一些优化措施进行讨论(参见“JVM性能优化,Part 1″中对JVM的介绍)。Eva Andreasson将对不同种类的转载 2013-10-10 17:49:32 · 855 阅读 · 0 评论 -
JVM性能优化, Part 1 ―― JVM简介
众所周知,Java应用程序是运行在JVM上的,但是你对JVM有所了解么?作为这个系列文章的第一篇,本文将对经典Java虚拟机的运行机制做简单介绍,内容包括“一次编写,到处运行”的利弊、垃圾回收的基本原理、常用垃圾回收算法的示例和编译器优化等。后续的系列文章将会JVM性能优化的内容进行介绍,包括新一代JVM的设计思路,以及如何支持当今Java应用程序对高性能和高扩展性的要求。如果你是一名程序转载 2013-10-10 17:49:00 · 860 阅读 · 0 评论 -
方法的虚分派(virtual dispatch)和方法表(method table)
Java方法调用的虚分派JUN 2ND, 2013 | COMMENTS本文通过介绍 Java 方法调用的虚分派,来加深对 Java 多态实现的理解。需要预先理解 Java 字节码和 JVM 的基本框架。虚分配(Virtual Dispatch)首先从字节码中对方法的调用说起。Java 的 bytecode 中方法的调用实现分为四种指令:1.invo转载 2014-02-23 21:12:05 · 900 阅读 · 0 评论 -
JVM性能优化, Part 3 —— 垃圾回收
ImportNew注:本文是JVM性能优化 系列-第3篇-《JVM性能优化, Part 3 —— 垃圾回收》第一篇 《JVM性能优化, Part 1 ―― JVM简介 》第二篇《JVM性能优化, Part 2 ―― 编译器》Java平台的垃圾回收机制大大提高的开发人员的生产力,但实现糟糕的垃圾回收器却会大大消耗应用程序的资源。本文作为JVM性能优化系列的第3篇,转载 2013-10-10 17:50:08 · 831 阅读 · 0 评论 -
在运行期通过反射了解JVM内部机制
本文由 ImportNew - 黄飞飞 翻译自 takipioncode。欢迎加入Java小组。转载请参见文章末尾的要求。在日常工作中,我们都习惯直接使用或者通过框架使用反射。在没有反射相关硬编码知识的情况下,这是Java和Scala编程中使用的类库与我们的代码之间进行交互的一种主要手段。但是,使用反射仅限于JVM内部运行的Java和Scala代码。假使在运行期通过反射既能查看自己的代码又转载 2014-03-14 18:47:40 · 594 阅读 · 0 评论 -
深度探讨Java字节代码的操纵方法
本文为IBM工程师成富编写的《Java深度历险》的第一部分Java字节代码的操纵,像这样Java语言的深度理解和运用还没有很多文章,我们把他奉献给读者,希望读者们喜欢。AD:2013云计算架构师峰会课程资料下载51CTO编者按:我们曾给大家介绍过Java字节码文件操作技巧。Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Or转载 2014-02-16 22:31:26 · 529 阅读 · 0 评论 -
JVM 核心技术
1.Java代码编译和执行的整个过程;2. JVM内存管理及垃圾回收机制; 先看图,二.Java代码编译和执行的整个过程Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:Java代码编译和执行的整个过程包含了以下三个转载 2014-02-13 17:41:26 · 732 阅读 · 0 评论 -
Java虚拟机类加载机制浅谈
Java语言是一种编译后再经过解释器执行的过程, 解释器主要就是如何处理解释Class文件的二进制字节流。JVM主要包含三大核心部分:运行时数据区,类加载器和执行引擎。 虚拟机将描述类的数据从Class文件加载到内存,并对数据进行校验、准备、解析和初始化,最终就会形成可以被虚拟机使用的Java类型,这就是一个虚拟机的类加载机制。Java中的类是动态加载的,只有在运行期间使用转载 2014-02-24 09:47:57 · 520 阅读 · 0 评论 -
Java内存模型
一 JAVA内存模型JMM Java的内存模型,也就是JVM所设置的内存模型。Java内存模型分为主存储器(主内存)和工作存储器(工作内存),这里的存储器与计算机硬件所讲的不一样。 主存储器,就是实例位置所在的区域,所有的实例都存在主存储器内,并且实例的字段也位于这里。主存储器为所有的线程所共享,主内存主要对应于Java堆中对象的实例数据部分。 工作存储器,转载 2014-02-24 09:53:34 · 512 阅读 · 0 评论 -
JVM的参数说明
Java虚拟机的参数说明Java运行时数据区域:线程共享区:方法区(永久区),堆线程私有区:虚拟机栈,本地方法栈,程序计数器JAVA_OPTS="-server -Duser.timezone=GMT+08-Xms1024m -Xmx1024m -XX:PermSize=1024m -Xmn512m-XX:MaxPermSize=1024m-转载 2014-02-24 09:47:15 · 629 阅读 · 0 评论 -
深入java虚拟机--Class文件实例解析
前面发了几篇学习笔记,但是看这些东西总是感觉很"玄乎",来一篇实战的东西来揭一下"JVM"的面纱,让"SSH"时代的童鞋们来熟悉一下Java的"老祖爷"JVM。由于自己的水平有限,所以大家在看过程中发了什么问题,或者您有什么疑问请及时提出来,我及时解决。如果您有什么建议,那么更好大家一块讨论。 1. 源码文件?public class Le转载 2013-05-20 21:15:06 · 675 阅读 · 0 评论