标签 ‘ JVM ’
走进Java
作者:小村长
本项目是 周志明 老师写的《深入理解Java虚拟机》的读书笔记,也是我迄今为止读到的认为介绍JVM最好的一本书籍, 读了很多遍,每次都对JVM有新认识。本次笔记主要针对想了解JVM的同学,希望能够对大家的工作和学习有所帮助。
由于我也是第一次公开自己的读书笔记,还不是很深入,可能某些地方存在不足。希望大家有什么好的建议可以评价告诉我,我看到会尽力改进,力争能给大家提供优质的读书笔记。同时也希望有能力的同学也共享自己读书笔记方便大家交流学习。在此,我还是建议有时间的同学能够自己去看看周老师书籍。
概述
Java不仅仅是一门编程语言,还是一个由一些列计算机软件和规范形成的技术体系
Java技术体系
Sun定义的Java技术体系包括: – [x] Java程序设计语言 – [x] Java虚拟机 – [x] Class文件格式 – [x] Java API类库 – [x] Java类库
Java程序设计语言、Java虚拟机、Java API类库统称为JDK,JDK是用于Java程序开发的最小环境 <br/> Java API类库中的Java SE API子集和Java虚拟机统称为JRE,JRE是支持Java程序运行的标准环境
Java技术体系可分为四个平台: – Java Card:是一个让Java小程序(Applets)运行在小内存设备(智能卡等)的平台 – Java ME:这个平台支持的是在移动终端(手机平板等)运行Java程序 – Java SE:是一个支持桌面级应用程序(例如windows中的应用程序)的平台,提供了完整的Java核心API – Java EE: 是一个支持多层架构企业应用(例如企业资源计划的平台
展望Java技术的未来
- 模块化
- 混合语言
- 多核并行
- 进一步丰富语法
- 64位虚拟机
如何成为一位「不那么差」的程序员
前言
已经记不清有多少读者问过:
博主,你是怎么学习的?像我这样的情况有啥好的建议嘛?
也不知道啥时候我居然成人生导师了。当然我不排斥这些问题,和大家交流都是学习的过程。
因此也许诺会准备一篇关于学习方面的文章;所以本文其实准备了很久,篇幅较长,大家耐心看完希望能有收获。
以下内容仅代表我从业以来所积累的相关经验,我会从硬技能、软实力这些方面尽量阐述我所认为的
“不那么差的程序员”
应当做到哪些技能。
如何优雅的使用和理解线程池
前言
平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的《阿里巴巴 Java 手册》里也有一条:
可见线程池的重要性。
简单来说使用线程池有以下几个目的:
- 线程是稀缺资源,不能频繁的创建。
- 解耦作用;线程的创建于执行完全分开,方便维护。
- 应当将其放入一个池子中,可以给其他任务进行复用。
Byte Buddy 教程(1.1)-编写一个安全的库
Java 语言带有一套比较严格的类型系统。Java 要求所有变量和对象都有一个确定的类型,并且任何向不兼容类型赋值都会造成一个错误。这些错误通常都会被编译器检查出来,极少情况下会被 Java 运行时检查到,然后抛一个非法类型的错误。如此严格的类型在大多数情况下是比较令人满意的,比如在编写业务应用时。通常,可以以任何模型元素表示其自己的类型这种明确的方式来描述业务域。通过这种方式,我们可以用 Java 构建具有非常强可读性和稳定性的应用,应用中的错误也非常贴近源码。除此之外,Java 严格的类型系统造就 Java 在企业编程中的普及。
从单例模式到Happens-Before
本文主要从简单的单例模式为切入点,分析单例模式可能存在的一些问题,以及如何借助Happens-Before分析、检验代码在多线程环境下的安全性。
JAVA的内存模型及结构
原文链接 译文链接 作者:Tai Truong 译者:Jaxon
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?
Java内存模型在JVM specification, Java SE 7 Edition, and mainly in the chapters “2.5 Runtime Data Areas” and “2.6 Frames”中有详细的说明。对象和类的数据存储在3个不同的内存区域:堆(heap space)、方法区(method area)、本地区(native area)。 阅读全文
JVM内部原理
JVM内部原理
原文链接 原文作者:James D Bloom 翻译:梅小西(904516706) 校对:吴京润
这篇文章详细描述了Java虚拟机的内在结构。下面这张图来自《The Java Virtual Machine Specification Java SE 7 Edition》,它展示了一个典型的JVM的主要的内部结构。
JVM性能优化(三):垃圾收集
原文地址,译文地址,译者:Greenster
Java平台的垃圾收集机制显著提高了开发者的效率,但是一个实现糟糕的垃圾收集器可能过多地消耗应用程序的资源。在Java虚拟机性能优化系列的第三部分,Eva Andreasson向Java初学者介绍了Java平台的内存模型和垃圾收集机制。她解释了为什么碎片化(而不是垃圾收集)是Java应用程序性能的主要问题所在,以及为什么分代垃圾收集和压缩是目前处理Java应用程序碎片化的主要办法(但不是最有新意的)。
垃圾收集(GC)的目的是释放那些不再被任何活动对象引用的Java对象所占用的内存,它是Java虚拟机动态内存管理机制的核心部分。在一个典型的垃圾收集周期里,所有仍然被引用的对象(因此是可达的)都将被保留,而那些不再被引用的对象将被释放、其所占用的空间将被回收用来分配给新的对象。
为了理解垃圾收集机制和各种垃圾收集算法,首先需要知道关于Java平台内存模型的一些知识。
JVM性能优化(一)JVM技术入门
作者 Eva Andreasson 译者:赵峰 校对:方腾飞 原文链接
Java应用程序是运行在JVM上的,但是你对JVM技术了解吗?这篇文章(这个系列的第一部分)讲述了经典Java虚拟机是怎么样工作的,例如:Java一次编写的利弊,跨平台引擎,垃圾回收基础知识,经典的GC算法和编译优化。之后的文章会讲JVM性能优化,包括最新的JVM设计——支持当今高并发Java应用的性能和扩展。
如果你是一个开发人员,你肯定遇到过这样的特殊感觉,你突然灵光一现,所有的思路连接起来了,你能以一个新的视角来回想起你以前的想法。我个人很喜欢学习新知识带来的这种感觉。我已经有过很多次这样的经历了,在我使用JVM技术工作时,特别是使用垃圾回收和JVM性能优化时。在这个新的Java世界中,我希望和你分享我的这些启发。希望你能像我写这篇文章一样兴奋的去了解JVM的性能。
阅读全文
JVM实用参数(八)GC日志
原文地址:https://blog.codecentric.de/en/2014/01/useful-jvm-flags-part-8-gc-logging/
作者:PATRICK PESCHLOW,译者:Greenster 校对:梁海舰
本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数。GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配模式。
阅读全文