
JVM
文章平均质量分 88
iteye_6273
这个作者很懒,什么都没留下…
展开
-
自己动手写写:关于jvm的理解(1)
Java虚拟机是什么 要理解java虚拟机,你首先必须意识到,当你说“Java虚拟机”时,可能指的是如下三个不同的东西:1. 抽象规范2. 一个具体的实现3. 一个运行中的虚拟机实例 Java虚拟机抽象规范仅仅是一个概念,在Tim Lindholm和Frank Yellin编著的《The Java Virtual Machine...2011-06-16 17:45:04 · 232 阅读 · 0 评论 -
Java method invoke的指令简介
方法调用相关的jvm子令集主要有一下四种: invokestatic ------------------------------->调用类方法(静态绑定,速度快) invokevirtual ------------------------------>调用实例方法(动态绑定) invokespecial ---------------------------...2011-08-29 14:45:31 · 471 阅读 · 0 评论 -
自己动手写写:GC何时触发?
本文是基于Oracle的Hotspot JVM 1.6版本的分析。 先来看一下 HotSpot的内存结构: 备注:在HotSpot中本地方法栈和JVM方法栈是同一个,因此也可以用-Xss控制。经IBM研究,通常运行的程序有80%--98%的对象是临时对象,因此Hotspot对JVM堆采用了分代的方式来管理,以提升GC的效率。 下面我们来看一张堆内存逻辑划分...2011-07-20 10:48:02 · 201 阅读 · 0 评论 -
浅谈设置JVM内存分配的几个妙招(转)
一、设置JVM内存设置1. 设置JVM内存的参数有四个:-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;-Xmn Java Heap Young区大小,不熟悉最好保留...原创 2011-07-08 18:57:22 · 110 阅读 · 0 评论 -
自己动手写写:Java序列化
从以下几个方面来讨论这个问题 1、序列化是用来干什么的? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容就行流化。简而言之就是为了保存内存中的各种实例对象的状态,并且可以通过反序列化将实例对象的状态再读出来。 2、为什么需要序列化? 为了将对象转换为更加容易传输的格式,减少网络流量的开销。例如,可以序列化一个实例对象,然后使用Http通过Inte...2011-07-06 16:00:17 · 236 阅读 · 0 评论 -
自己动手写写:Java GC
为什么要使用垃圾收集器? 类似类型为什么要收集一样(参考http://boy00fly.iteye.com/blog/1108420)。java程序运行的过程中,越来越多的对象在堆中生成,占用的内存越来越大,如果不收集的话,到最后结果可想而知;即使堆内存足够,请求分配新对象时可能不得不增大堆空间的大小,虽然可以使用的总空闲空间是足够的,这是因为堆中没有连续的空闲空间放得下新的对象,在一个虚...2011-06-29 11:22:35 · 222 阅读 · 0 评论 -
Java类型的生命周期简介
这里要讲的是类型(Class)的生命周期而不是对象的生命周期,后续文章将描述GC的相关内容。 1. 类型的生命周期的开始 装载(Load)----->连接(Link)------>初始化(Initialize),而连接阶段分为三个子步骤----------验证(Verifiy)--->准备(Prepare)--->解析(Resolve)(可选的)。 见下图:...2011-06-28 18:19:41 · 195 阅读 · 0 评论 -
java class文件简介
之前对Java虚拟机作了概述,接下来来讲一讲Java class文件,主要涉及class文件的内容,包括常量池的结构及其格式等。 Java class文件是什么? java class 文件是对Java程序二进制文件格式的精确定义。每一个Java class文件都对一个Java类或者Java接口做出了全面描述。一个class文件中只能包含一个类或者接口。无论Java class文...原创 2011-06-23 16:51:10 · 873 阅读 · 0 评论 -
Java的数据类型
Java数据类型 Java虚拟机是通过某些数据类型来执行计算的,数据类型及其运算都是由Java虚拟机规范严格定义的。数据类型分为两种:基本数据类型和引用数据类型。基本类型的变量持有原始值,而引用数据类型的变量持有引用值。术语“引用值”指的是对某个变量的引用,而不是该对象本身。与此相对的,原始值则是真正的原始数据。下图是Java虚拟机中数据类型的描述。 ...原创 2011-06-21 23:33:37 · 99 阅读 · 0 评论 -
java类装载器详细介绍
Java类装载器子系统 在Java虚拟机中,负责查找并装载类型的那部分被称为类装载子系统。上图描述了,类装载器在JVM组成中的位置。 Java虚拟机有两种类装载器:启动类装载器和用户自定义类装载器。前者是Java虚拟机实现的一部分,后者则是Java程序的一部分。由不同的类装载器装载的类将被放在虚拟机内部的不同命名空间中。 ...原创 2011-06-17 17:27:46 · 291 阅读 · 0 评论 -
自己动手写写:关于jvm的理解(3)
上篇文章讲到了Heap(堆)相关的内容,下面紧接着讲讲Runtime Data Areas(运行数据区)中Java Stacks、PC Register、Native Method Stacks. Java Stacks 每当启动一个新线程时,Java虚拟机都会为它分配一个Java栈。前面我们曾经提到,Java栈出帧为单位保存线程的运行状态。虚拟机只会直接对Java栈执...原创 2011-06-17 15:08:07 · 152 阅读 · 0 评论 -
自己动手写写:关于jvm的理解(2)
上篇文章描述了Runtime Date Areas(运行时数据区)这一大块中的Method Area(方法区),此篇文章接着上一篇的内容往下讲。 Heap 堆 java程序在运行时创建的所有类实例或数组都放在同一个堆中。而一个Java虚拟机实例只存在一个堆内存空间,因此所有的线程均共享这个堆。又由于一个java程序独占一个Java虚拟机实例,因而每个java程序都有他自己的堆内存...原创 2011-06-16 22:58:22 · 183 阅读 · 0 评论 -
自用【链接贴】
//---------------------------------------------Java语言相关---------------------------------------------------- The Java Language Specification, Java SE 7 Edtion Java SE 7 Features and Enhance...2011-09-17 20:05:19 · 270 阅读 · 0 评论