Thread类和Runnable接口和Java内存管理模型使得多线程编程简单直接。但是Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。
Callable接口和Future接口的引入以及它们对线程池的支持优雅的解决了这两个问题。
Callable接口类似于Runnable接口,Callable接口被线程执行后,可...
分类:
编程语言 时间:
2015-06-29 08:46:23
阅读次数:
146
JMM 1、内存模型的抽象。本地内存是JMM的一个抽象概念,并不是真实存在,它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。 2、内存可见性问题? ? 3、重排序编译器优化重排序 编译器再不改变单线程程序语义的前提下,可重新安排语句执行顺序。指令级并行重排序 现代处理器采用了指...
分类:
编程语言 时间:
2015-06-29 06:20:10
阅读次数:
247
前言
只看代码,我们只能了解程序执行的先后顺序,通过内存分析,我们可以了解程序执行过程中的内存分配情况。前者是在时间维度上进行分析,后者是在空间维度上进行分析。本文目的就是将具体代码与其执行过程中的内存分配情况对应起来,使大家对这块内容有个清晰的认识。
概述
根据下图,我们首先来介绍一下整个程序执行过程。主要分为三步:
双击程序文件,将程序装载到内存中;
内存中本身有操...
分类:
编程语言 时间:
2015-06-27 21:30:30
阅读次数:
170
JVM全称是java Virtual Machine(java虚拟机),JVM屏蔽了与各个计算机平台相关的软件和硬件差异。
在接下来的日子里,通过写博客的形式学习JVM,让自己更懂得Java!
本系列文章是对《深入分析javaweb技术内幕》和《深入理解java虚拟机》的总结,欢迎大家一起吐槽,一起进步。
《JVM解读》第一篇:JVM体系结构
《JVM解读》第二篇:JVM类加载器ClassL...
分类:
编程语言 时间:
2015-06-26 23:49:48
阅读次数:
161
引言 ? ? 学习Java也有一段时间了,总感觉有些东西学的不是很精通。例如Java内存区域到底是怎么样的?程序是怎么跑的?对象是怎么存放的?这些都影响了我对自己的代码的熟悉程度。 一 运行时数据区域 ? ? Ja...
分类:
编程语言 时间:
2015-06-24 22:41:37
阅读次数:
205
Java 内存分配:1. 寄存器我们在程序中无法控制2. 栈存放基本类型的变量数据,局部变量,和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆存放用new产生的对象,数组。为了给垃圾回收器使用,...
分类:
编程语言 时间:
2015-06-24 14:21:11
阅读次数:
173
作为一个程序员,仅仅知道怎么用是远远不够的。起码,你需要知道为什么可以这么用,即我们所谓底层的东西。
那到底什么是底层呢?我觉得这不能一概而论。以我现在的知识水平而言:对于Web开发者,TCP/IP、HTTP等等协议可能就是底层;对于C、C++程序员,内存、指针等等可能就是底层的东西。那对于Java开发者,你的Java代码运行所在的JVM可能就是你所需要去了解、理解的东西。
我会在接下来的一段时间,和读者您一起去学习JVM,所有内容均参考自《深入理解Java虚拟机:JVM高级特性与最佳实践》(第二版),感谢...
分类:
编程语言 时间:
2015-06-21 11:56:36
阅读次数:
214
java内存泄漏主要分成两个方面:(1)堆中申请的空间没有被释放(2)对象已不在被使用,但是仍然存在在内存当中以下集中情况可能会导致内存泄漏(1)静态集合的使用hashmap和vector,静态容器的生命周期与程序一致,那么容器在程序结束之前将不能被释放,从而造成内存泄漏;比如:vector v=n...
分类:
编程语言 时间:
2015-06-20 16:59:52
阅读次数:
142
转载自http://blog.csdn.net/shimiso本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(Java Virtual...
分类:
编程语言 时间:
2015-06-18 17:04:37
阅读次数:
117
1、Java内存模型 根据JVM虚拟机的规范,内存主要被分为以下七个部分:1、PC寄存器 保存虚拟机正在执行的字节码的地址。字节码解释器在运行时就是通过改变PC寄存器来选取下一条需要执行的字节码指令,分支,循环,抛出异常,返回等需要依赖计数器...
分类:
编程语言 时间:
2015-06-17 21:29:05
阅读次数:
132