JVM原理
喝酸奶舔盖儿的土鳖
事情都是有双面性的。
展开
-
Java虚拟机(六)-JVM性能优化(序)
Garbage Firest(G1) 这部分的内容主要参考http://www.blogjava.net/BlueDavy/archive/2009/03/11/259230.html 目标 从设计目标看G1完全是为了大型应用而准备的。 支持很大的堆 高吞吐量 --支持多CPU和垃圾回收线程 --在主线程暂停的情况下,使转载 2014-12-10 06:46:24 · 549 阅读 · 0 评论 -
Java虚拟机(六)-JVM性能优化
在说明JVM性能优化之前,堆和栈是程序运行的关键,很有必要把他们的关系说得更清楚一些。 1、栈是运行时的单位,而堆是存储的单位。 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。 在Java中一个线程就会相应有一个线程栈与之对应,这点很容易理解,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈原创 2014-12-10 06:29:21 · 467 阅读 · 0 评论 -
Java虚拟机(四)-JVM内存机制
内存作为系统中重要的资源,对于系统稳定运行和高效运行起到了关键的作用,Java和C之类的语言不同,不需要开发人员来分配内存和回收内存,而是由JVM来管理对象内存的分配以及对象内存的回收(又称为垃圾回收、GC),这对于开发人员来说确实大大降低了编写程序的难度,但带来的一个副作用就是,当系统运行过程中出现JVM抛出的内存异常(例如OutOfMemoryError)的时候,很难知道原因是什么原创 2014-12-04 17:36:52 · 573 阅读 · 0 评论 -
Java虚拟机(二)-JVM类加载机制
JVM类加载机制是指将jar或目录中的.class文件加载到JVM,并形成Class对象的机制,应用可对Class对象进行实例化从而进行调用,JVM的类加载机制是动态的,因此可在运行时动态的加载外部的类、远程网络下载过来的字节码等,除了这个动态化的优点外,也可通过JVM的类加载机制来达到合理的类隔离的效果,例如Application Server中要避免两个应用的类互相干扰。原创 2014-11-27 16:49:31 · 817 阅读 · 0 评论 -
Java虚拟机(三)-JVM执行机制
JVM 加载class文件后,已经将class文件中的常量信息、类信息、方法代码等放入方法区中了,但JVM具体是如何调用class中的方法的呢,本章节就具体来讲解下JVM的执行机制。 JVM通过执行引擎来完成字节码的执行,在执行过程中JVM采用的是自己的一套指令系统,每个线程在创建后,都会产生一个程序计数器(pc)和栈(Stack),其中程序计数器中存放了下一条将要执行的指令,原创 2014-11-27 17:48:26 · 694 阅读 · 0 评论 -
Java虚拟机(五)-JVM垃圾回收策略(序)
JVM垃圾回收策略有一些垃圾回收器,看了下书上内容,在网上找了篇,讲的很详细,供大家参考。 Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK1.6中Sun HotSpot虚拟机的垃圾收集器如下:转载 2014-12-08 20:43:29 · 497 阅读 · 0 评论 -
Java虚拟机(七)-JVM内存模型总结
JVM内存模型优点 1. 内置基于内存的并发模型:多线程机制 2. 同步锁Synchronization 3. 大量线程安全型库包支持 4. 基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁。 5. 多核并行计算模型 6. 基于线程的异步模型。 JVM性能的人为问题 1. 关键原因是:没有正确处理好对象的生命周期。 2. 需要从需求中找出存在自然边界的业务原创 2014-12-22 17:33:59 · 636 阅读 · 0 评论 -
Java虚拟机(一)-Java的class文件详解
java语言是跨平台的,所谓一次编写,到处运行。之所以是跨平台的,就是java定义了一套与操作系统,硬件无关的字节码格式,这个字节码就是用java class文件来表示的,java class文件内部定义了虚拟机可以识别的字节码格式,这个格式是平台无关性的,在linux系统或者在windows系统上都是一致的。这个就好比html文件,我们定义好规范,这个系统只要去按照规范显示出来里原创 2014-11-27 16:07:41 · 806 阅读 · 1 评论 -
Java虚拟机(五)-JVM垃圾回收策略
垃圾收集简史 垃圾收集提供了内存管理的机制,使得应用程序不需要在关注内存如何释放,内存用完后,垃圾收集会进行收集,这样就减轻了因为人为的管理内存而造成的错误,比如在C++语言里,出现内存泄露时很常见的。 Java语言是目前使用最多的依赖于垃圾收集器的语言,但是垃圾收集器策略从20世纪60年代就已经流行起来了,比如Smalltalk,Eiffel等编程语言也集成了垃圾收集器的机制。 垃圾收集原创 2014-12-08 20:19:35 · 566 阅读 · 0 评论