jvm
文章平均质量分 92
Java码界探秘
本博客不再维护,搬家到 http://zthinker.com。个人公众号(Java码界探秘)
展开
-
双重检查锁定及单例模式(ibm社区)
本文来自ibm社区 单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含 Java转载 2014-03-20 19:12:00 · 590 阅读 · 0 评论 -
JVM中的Hello World是如何运行的?
每一个Java开发者都是通过Hello World敲开面向对象世界的大门。但是在一开始,我们考虑的只是这个语言是什么样的,我们如何更好的编码,却很少有人关心他内部是怎么运行的。看下面一个简单的hello world。AD:2013云计算架构师峰会课程资料下载每一个Java开发者都是通过Hello World敲开面向对象世界的大门。但是在一开始,我们考虑的只是转载 2014-03-15 00:16:14 · 548 阅读 · 0 评论 -
浅析JVM内存结构和6大区域
内存作为系统中重要的资源,对于系统稳定运行和高效运行起到了关键的作用,Java和C之类的语言不同,不需要开发人员来分配内存和回收内存,而是由JVM来管理对象内存的分配以及对象内存的回收(又称为垃圾回收、GC),这对于开发人员来说确实大大降低了编写程序的难度,但带来的一个副作用就是,当系统运行过程中出现JVM抛出的内存异常(例如OutOfMemoryError)的时候,很难知道原因是什么,另外一方面转载 2014-03-15 00:13:16 · 513 阅读 · 0 评论 -
淘宝长仁:JVM性能指标的理论极限和衡量方法(TaobaoJVM)
在2013年阿里巴巴集团主办的ADC•阿里技术嘉年华,这是一场专属于的“技术盛宴”,倡导的大会上,51CTO记者有幸采访到了阿里巴巴核心系统部专用计算组负责人 王琤(长仁)老师,基于Taobao JVM的各个基本性能指标的理论极限和衡量方法介绍,以帮助大家认识、评估自己的算法实现是否高效,进一步指导优化工作,以及介绍了淘宝的下一个项目:反图像的搜索引擎技术iflake。AD:2013云计算转载 2014-03-15 00:07:39 · 2374 阅读 · 0 评论 -
你不知道的5个JVM命令行标志
本文是Neward & Associates的总裁Ted Neward为developerworks独家撰稿“你不知道5个……”系列的一篇文章:JVM有数百个命令行选项,在本文中,您将学习如何监控和记录编译器性能、禁用显式垃圾收集(System.gc();)、扩展 JRE 等等。AD:2013云计算架构师峰会课程资料下载本文是Neward & Associa转载 2014-03-15 00:04:25 · 564 阅读 · 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 · 527 阅读 · 0 评论 -
java内存区域——daicy
Java虚拟机 运行时数据区主要分为五部分:方法区,堆(这两块是所有线程共享的区域),程序计数器,本地方法栈,虚拟机栈(vm stack)(这三块为线程隔离区域)程序计数器(Program Counter Register)它是一块较小的内存空间,它的作用可以看做是当先线程所执行的字节码的信号指示器。每一条JVM线程都有自己的PC寄存器,各条线程转载 2014-03-14 23:19:11 · 544 阅读 · 0 评论 -
JVM学习笔记-操作数栈(Operand Stack)
Like the local variables, the operand stack is organized as an array of words. But unlike the local variables, which are accessed via array indices, the operand stack is accessed by pushing and poppin转载 2014-03-14 20:48:51 · 776 阅读 · 0 评论 -
java常用类解析七:java异常机制、异常栈、异常处理方式、异常链、异常丢失
1、java标准异常概述Throwable表示任何可以作为异常被抛出的类,有两个子类Error和Exception。从这两个类的源代码中可以看出,这两个类并没有添加新的方法,Throwable提供了所以方法的实现。Error表示编译时和系统错误。Exception是可以被抛出的异常类。RuntimeException继承自Exception(如NullPointerException),表转载 2014-03-15 10:31:31 · 547 阅读 · 0 评论 -
Java里的堆(heap)栈(stack)和方法区(method)
基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 。 方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后从栈空间回收。局部变量 new 出来时,在栈空间和堆空间中分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间区域等转载 2014-03-14 20:49:40 · 674 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记
“编好的机器指令”当然指的是能在CPU上运行的,如果这里我还实现了一个翻译机器:从自己定义的格式指令翻译到CPU指令,那么就可以执行根据自定义格式的代码了……AD:2013云计算架构师峰会课程资料下载在C里面我们想执行一段自己编写的机器指令的方法大概如下:typedef void(*FUNC)(int); char* str = "your code"转载 2014-03-15 00:18:24 · 544 阅读 · 0 评论 -
继承关系的类初始化和实例化的顺序
一切都是java编译器搞得鬼. JVM只是负责解析字节码.字节码虽然不是最原始的原子汇编码,但字节码已经可以完全解释JVM的指令执行过程了。AD:2013云计算架构师峰会课程资料下载就像之前的一个评论.我们学习的是思路. 很多人都知道继承关系的类的初始化和实例化的顺序,但如果忘记了怎么办? 如何找到自己的答案? 又如果遇到的问题是关于泛型的擦除问题,又该转载 2014-03-15 00:22:10 · 559 阅读 · 0 评论 -
Java Corba
1)首先要熟悉idl语言,这个是专门进行接口设计的语言,它与java没关系,有自己的语法,具体的规则需要大家自己再网上研究,这里不多说了(或者访问如下网站详细察看http://www.iona.com/support/docs/manuals/orbix/33/html/orbix33cxx_pguide/IDL.html)。module HelloApp{ interf转载 2014-03-15 09:23:50 · 733 阅读 · 0 评论 -
Class文件详解 (1)
我们都知道,Java编译器负责将.java文件编译成.class文件,class文件存储的是java字节码,与.java文件无关(只要你愿意写一个编译器,也可以将别的语言写的源代码编译成.class文件),本文准备详细解剖class文件的内部结构,并且把class文件结构读取并显示出来。Class文件的格式由JVM规范规定,一共有以下部分:1. magic number,必须是0xCA转载 2012-02-08 18:21:29 · 497 阅读 · 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 · 484 阅读 · 0 评论 -
Java 编程的动态性,第 1 部分: 类和类装入
研究类以及 JVM 装入类时所发生的情况这一有关 Java 编程动态方面的新的系列文章研究了执行 Java 应用程序时幕后所发生的事情。企业 Java专家 Dennis Sosnoski 提供了 Java 二进制类格式以及在 JVM 内部类所发生的情况的内幕。接着,他将讨论类装入问题,其范围涉及从运行简单的 Java 应用程序所需的类的数量到可能造成 J2EE 及类似的复杂转载 2014-03-18 00:07:26 · 580 阅读 · 0 评论 -
Java字节码指令集
字节码指令集 Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。 对于大部分为与数据类型相关的字节码指令,他们的操作码助记符中都有特殊的字符来表明专门为哪种数据类型服务:i代表对int类型的数据操作,l代表long,s代表short,b代表byte,c代表char,f代转载 2013-11-15 19:06:47 · 2042 阅读 · 0 评论 -
JAVA虚拟机体系结构
JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Java虚拟机实例通过调用某个初始类的main()方法来运行转载 2014-03-17 10:59:55 · 511 阅读 · 0 评论 -
我和JVM初次约会
前言:该篇是参考结合,自己剔除添加了一些内容整理的而来,这里感谢的文章的指点讲解。JVM的生命周期 “JVM实例和JVM执行引擎实例,JVM实例对应了一个独立运行的Java程序,而JVM执行引擎实例对应了属于用户运行程序的线程;也就是JVM实例是进程级别,而执行引擎是线程级别的”。JVM实例的诞生:启动一个带有main方法的Java程序时,一个JVM实例就产生了,此时类转载 2014-02-23 21:37:12 · 561 阅读 · 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 · 587 阅读 · 0 评论 -
JVM执行篇:使用HSDIS插件分析JVM代码执行细节
在《Java虚拟机规范》之中,详细描述了虚拟机指令集中每条指令的执行过程、执行前后对操作数栈、对局部变量表的影响等细节。这些细节描述与Sun的早期虚拟机(Sun Classic VM)高度吻合,但随着技术的发展,高性能虚拟机真正的细节实现方式已经渐渐与虚拟机规范所描述产生越来越大的差距,虚拟机规范中的描述逐渐成了虚拟机实现的“概念模型”——即实现只能保证规范描述等效。基于上面的原因,我们分转载 2014-03-15 14:43:16 · 622 阅读 · 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 · 505 阅读 · 0 评论 -
深入JVM——栈和局部变量
ddd转载 2014-03-14 20:47:11 · 1091 阅读 · 0 评论 -
JVM最简生存指南
本文由 ImportNew - Grey 翻译自 hadihariri。欢迎加入Java小组。转载请参见文章末尾的要求。最近更新 : 2014年1月9日为什么要写这个指南持续更新目标人群基础Java语言,Java环境,Java虚拟机多语言平台JVM字节码跨平台JVM部署和版本版本版本类型升级转载 2014-03-14 18:37:12 · 622 阅读 · 0 评论 -
【深入Java虚拟机】之七:Java编译与JIT编译
编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现。很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目转载 2014-01-19 21:44:05 · 573 阅读 · 0 评论 -
JVM性能优化, Part 5:Java的伸缩性
本文由 ImportNew - ImportNew读者 翻译自 Javaworld。如需转载本文,请先参见文章末尾处的转载要求。ImportNew注: JVM性能优化系列文章前4篇由ImportNew翻译(第一篇,第二篇,第三篇, 第四篇)。本文由新浪微博:吴杰 (@WildJay) 投稿至ImportNew。感谢吴杰! 如果你希望分享好的原创文章或者译文,欢迎投稿到ImportNew。转载 2014-01-23 13:45:03 · 509 阅读 · 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 · 696 阅读 · 0 评论 -
JVM并发机制的探讨——内存模型、内存可见性和指令重排序
原文出处: oschina并发本来就是个有意思的问题,尤其是现在又流行这么一句话:“高帅富加机器,穷矮搓搞优化”。从这句话可以看到,无论是高帅富还是穷矮搓都需要深入理解并发编程,高帅富加多了机器,需要协调多台机器或者多个CPU对共享资源的访问,因此需要了解并发,穷矮搓搞优化需要编写各种多线程的代码来压榨CPU的计算资源,让它在同一时刻做更多的事情,这个更需要了解并发。在我前一篇转载 2013-10-10 18:22:18 · 689 阅读 · 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 · 824 阅读 · 0 评论 -
Java分布式应用学习笔记02再谈JVM
1. 前言-为何要再谈JVM很多人认为,分布式Java应用看上去好像和Java虚拟机没什么太多关注的东西,别说分布式系统了,就是一个单机JavaSE系统也不用将JVM学得透透的,有个JVM执行不就行了吗。据笔者的经验回答则是,在大型分布式系统,尤其是云计算服务平台,SAAS也好,PAAS也罢,要求编写的应用必须要高效,你就当你运行的是一个配置很小的机器上,要求资源比较苛刻。所以了解,甚至转载 2012-02-14 21:23:59 · 645 阅读 · 0 评论 -
JDK、JRE、JVM之间的关系
http://blog.csdn.net/sunboy_2050/article/details/6252552 如果安装了JDK,会发同你的电脑有两套JRE,一套位于 /jre 另外一套位于 C:/Program Files/Java/j2re1.4.1_01 目录下后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端J转载 2013-05-14 22:09:42 · 542 阅读 · 0 评论 -
JVM性能优化, Part 1 ―― JVM简介
众所周知,Java应用程序是运行在JVM上的,但是你对JVM有所了解么?作为这个系列文章的第一篇,本文将对经典Java虚拟机的运行机制做简单介绍,内容包括“一次编写,到处运行”的利弊、垃圾回收的基本原理、常用垃圾回收算法的示例和编译器优化等。后续的系列文章将会JVM性能优化的内容进行介绍,包括新一代JVM的设计思路,以及如何支持当今Java应用程序对高性能和高扩展性的要求。如果你是一名程序转载 2013-10-10 17:49:00 · 839 阅读 · 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 · 872 阅读 · 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 · 797 阅读 · 0 评论 -
JVM的垃圾回收与内存分配
Java是一种内存动态分配和垃圾回收技术的一种语言,不需要显示的进行对象内存的分配,这一切操作都是由JVM来完成的,由于Java是“一切皆对象”的,所以对于内存分配的优化与速度非常的高效。在Java中一个对象在堆中的分配以及灭亡都是由JVM来完成的。JVM负责来垃圾回收与对象分配。一 垃圾回收 垃圾回收(Garbage Collection,GC),研究这个主要目的就是为了转载 2014-02-24 09:47:02 · 767 阅读 · 0 评论 -
深入JVM的Class文件结构
Class文件由顺序的8位字节为基础单位构成的二进制流。各个项目严格按照顺序紧凑排列,无分隔符。需要用8位字节以上空间数据项时按照高位在前分割成若干个8位字节存储。只包含2种数据类型:无符号数表无符号数是class文件基本数据类型,以u1,u2,u4,u8分别代表1个字节,2个,4个,8个字节的无符号数。可以用来描述数字、索引引用、数量值、以UTF-转载 2014-03-14 18:49:38 · 508 阅读 · 0 评论 -
在运行期通过反射了解JVM内部机制
本文由 ImportNew - 黄飞飞 翻译自 takipioncode。欢迎加入Java小组。转载请参见文章末尾的要求。在日常工作中,我们都习惯直接使用或者通过框架使用反射。在没有反射相关硬编码知识的情况下,这是Java和Scala编程中使用的类库与我们的代码之间进行交互的一种主要手段。但是,使用反射仅限于JVM内部运行的Java和Scala代码。假使在运行期通过反射既能查看自己的代码又转载 2014-03-14 18:47:40 · 565 阅读 · 0 评论 -
JVM源码分析-Java运行
最近在看Java并发编程实践和Inside JVM两本书,发现如果不真正的了解底层运作,那么永远是雾里看花。因此从http://openjdk.java.net/groups/hotspot/上下载了源代码,准备研究一番。要想完全研究懂我觉得得对计算机体系结构,C,C++编程,Linux内核都有比较深入的理解。由于并非从事JVM开发工作,因此不会研究的那么深入。入手就从“java 类名”这个转载 2014-02-18 21:38:19 · 976 阅读 · 0 评论 -
深度探讨Java字节代码的操纵方法
本文为IBM工程师成富编写的《Java深度历险》的第一部分Java字节代码的操纵,像这样Java语言的深度理解和运用还没有很多文章,我们把他奉献给读者,希望读者们喜欢。AD:2013云计算架构师峰会课程资料下载51CTO编者按:我们曾给大家介绍过Java字节码文件操作技巧。Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Or转载 2014-02-16 22:31:26 · 514 阅读 · 0 评论 -
JVM 核心技术
1.Java代码编译和执行的整个过程;2. JVM内存管理及垃圾回收机制; 先看图,二.Java代码编译和执行的整个过程Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:Java代码编译和执行的整个过程包含了以下三个转载 2014-02-13 17:41:26 · 697 阅读 · 0 评论