努力奔跑中的coder

源代码的github地址:https://github.com/louyuting

排序:
默认
按更新时间
按访问量

13.《深入理解Java虚拟机》Java与线程

Java与线程在Java里面的并发大多与多线程脱离不了关系;线程的实现我们知道,线程是比进程更加轻量级的调度执行单位。各个线程可以共享进程资源,又可以独立调度。在Java的Thread类中,我们观察源码可以发现,它的所有关键方法都声明成了Native方法,这表示这个方法的实现一般都是与平台相关的。...

2017-01-04 11:33:30

阅读数:1120

评论数:0

12.《深入理解Java虚拟机》Java内存模型JMM

TPS: 每秒事物处理数是衡量一个服务性能好坏高低的重要指标之一。 1. Java的内存模型Java虚拟机规范中试图定义一种Java内存模型JMM来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C/C++等)直接使用物...

2017-01-03 12:57:09

阅读数:546

评论数:0

11.《深入理解Java虚拟机》类加载器与双亲委派模型

2017-1-2 20:20 写了一天的blog和看书,看不下去了,回去健身。明天再写。 2017-1-2 23:00 回到寝室我还是妥协了,还是先把这个写完吧。 类与类加载器虚拟机设计团队把类的加载阶段中的”通过一个类的全限定名来获取此类的二进制字节流”这个动作放到Java虚拟机外部去实现...

2017-01-02 20:17:52

阅读数:349

评论数:0

10.《深入理解Java虚拟机》虚拟机类加载机制

本篇blog主要是讲解一下两点内容: 1. 虚拟机如何加载这些Class文件? 2. Class文件中的信息进入到虚拟机之后会发生什么变化? 与C/C++不同,Java里面类型的加载、连接和初始化过程都是在程序运行期间完成的。这种策略虽然会稍微增加性能开销但是换来了高度的灵活性,Jav...

2017-01-02 19:48:53

阅读数:303

评论数:0

9.《深入理解Java虚拟机》对象分配与回收策略

Java技术体系的自动化内存管理最终可以归结为:给对象分配内存和回收分配给对象的内存。关于内存的回收前面已经很详细的讲解了垃圾收集器,下面探讨给对象分配内存: 对象的内存分配,往大的方向上讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分...

2017-01-02 14:02:14

阅读数:264

评论数:0

8.《深入理解Java虚拟机》内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别

内存溢出和内存泄露的区别 内存溢出:指的是程序在申请内存的时候,没有足够大的空间可以分配了。 内存泄露:指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可达但无用。内存泄露一般都是因为内存中有一块很大的对象,但是无法释放。 从定义上可以看出,内存泄露终将导致...

2017-01-02 13:46:58

阅读数:905

评论数:0

7.《深入理解Java虚拟机》垃圾收集器-垃圾收集算法的具体实现

前面简要介绍了HotSpot是如何去发起内存回收的问题,但是没有涉及具体的内存回收动作。下面介绍GC收集器,讨论垃圾回收的具体算法的实现。 不同虚拟机所提供的垃圾收集器可能会有很大差别,我们使用的是HotSpot,HotSpot这个虚拟机所包含的所有收集器如图: 上图展示了7种作用于不同分代的收...

2017-01-02 13:40:36

阅读数:239

评论数:0

6.《深入理解Java虚拟机》HotSpot 的算法实现

前面的blog在理论上介绍了对象存活判定算法和垃圾收集算法,然而在HotSpot虚拟机上实现这些算法时必须对算法的执行效率有足够严格的考量,才能保证虚拟机高效运行。1.可达性分析算法中的枚举根节点在对象存活算法的可达性分析算法中从GC Roots节点找引用链这个操作为例。其中可达性分析对执行时间的...

2017-01-02 10:32:54

阅读数:295

评论数:0

5.《深入理解Java虚拟机》垃圾收集算法思想

前面一篇博文讲了怎么判断哪些对象是可以被收集的,确定了哪些对象可以被回收之后,自然需要研究的是如何对对象进行回收。下面主要介绍几种算法的思想以及其发展过程: 首先普及两个概念: 新生代:主要用来存放新生的对象。 老年代:主要用来存放应用程序中生命周期长的内存区域。 持久代:主要存放...

2017-01-01 19:43:28

阅读数:213

评论数:0

4.《深入理解Java虚拟机》对象是否可回收?

接下来的几篇博文就讨论如下问题: 1. 哪些内存需要回收(Java堆和方法去区) 2. 什么时候回收; 3. 如何回收。 对象已死吗?Java堆里面几乎存放了所有的对象,垃圾收集器在对堆进行回收前,第一件事情就是确定哪些对象已经”死去”(即不可能再被任何途径使用的对象).下面介...

2017-01-01 19:13:41

阅读数:213

评论数:0

3.《深入理解Java虚拟机》内存溢出实例分析

1.堆溢出Java堆的唯一作用就是存储对象实例的数据,只要我们不断的创建新的对象并保证这些新的对象不被Gc回收,当对象数量达到一定容量超过堆的最大容量就会产生内存溢出的异常。 测试代码如下:package JVM;import java.util.ArrayList; import java.u...

2017-01-01 17:51:10

阅读数:242

评论数:0

2.《深入理解Java虚拟机》Hotspot虚拟机中的对象创建与访问定位

本文主要针对以下问题:对于虚拟机中的对象是如何创建的,对象的内存是如何布局的以及如何访问对象。 1. 对象的创建 在Java中对象的创建主要是通过new这个关键字来实现的,那么一个对象的创建过程是怎样的呢?通过下面几步来描述:当虚拟机遇到一个new关键字时,首先去检查这个指令的能否在常量池中定...

2016-07-31 13:25:22

阅读数:308

评论数:0

1. 《深入理解Java虚拟机》Java运行时数据区域

java与C++之间在内存分配与回收上的最大区别就是:C++是内存动态分配而Java是由垃圾收集技术解决的。 1.运行时数据区域Java在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途、创建和销毁的时间,有一些是随虚拟机的启动而创建,随虚拟机的退出而销...

2016-07-30 11:43:55

阅读数:393

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭