Java并发之多线程

写在前面

多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”。

查看更多

Java虚拟机之JVM启动参数大全

说明

本文所有的参数是基于JDK7的HotSpot虚拟机,适用于JDK7及以前版本,JDK7后续版本参数是否有效请自测。

对于启用或关闭功能选项:-XX:+<option>打开某功能;-XX:-<option>关闭某功能;

对于数字型选项:-XX:<option>=<number>,若需要表示大小,可在数字后添加k、m、g;

对于字符串选项:-XX:<option>=<string>,用于指定文件,路径或命令列表;

查看更多

Java虚拟机之内存模型与volatile

硬件效率与一致性

尽管现代内存的速度在不断提高,但是内存的速度与cpu比起来还不在一个量级,为了提升计算速度,在内存和处理器之间加上一个高速缓存来作为内存和处理器之间的缓冲。基于高速缓存的方法很好的解决了处理器与内存的矛盾,但是也引入了一个新的问题:缓存一致性。每个处理器都有自己的高速缓存,而他们又共享一个主内存。当处理多个处理器的运算任务都涉及同一个主内存区域时,将可能导致各自的缓存数据不一致,如果真发生这种情况,将同步到主内存的数据到底以谁的缓存数据为准。为了解决一致性问题,需要各个处理器访问缓存时都遵循一些协议。

查看更多

Java虚拟机之类加载器

类加载器介绍

类加载器负责将class文件加载到内存中,并为之生成对应的java.lang.Class对象。对于任意一个类,都需要加载它的类加载器和这个类本身来确定该类在JVM中唯一性,也就是说,同一个class文件用两个不同的类加载器加载并创建两个java.lang.Class对象,即使两个对象来源自同一个class文件,它们也是不相等的,这里“相等”包括Class对象的equals()方法、isAssignableFrom()方法、isInstance()方法,也包括使用instanceof关键字做对象所属关系判定情况。

查看更多

Java虚拟机之类加载机制

概述

Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

与其他语言不同的是在Java语言里,类的加载、连接和初始化过程都是在程序运行期间完成的,Java里可动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。

查看更多

Java虚拟机之垃圾回收机制

概述

在Java堆中,同一个接口中的多个实现类需要的内存是不一样的,一个方法中的多个分支需要的内存也不一样,Java程序只有在处于运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存。本文将讲述Java自动内存管理中,Java虚拟机对内存的回收机制。

查看更多

Java虚拟机之JVM内存区域与Java对象

前言

最近第七次拜读《深入理解Java虚拟机:JVM高级特性与最佳实践》,每次读都有不同的收获,为了以防自己读后忘记,同时为了加深理解,准备写一系列JVM相关文章。能力有限,文中大部分内容均由本人整理总结自《深入理解Java虚拟机:JVM高级特性与最佳实践》,文中出现错误的地方请见谅。

查看更多

爬虫爬取了某大学阳光平台几千条信件后做了个有趣的分析

最近在家准备写毕业论文,在家里查文献的时候特别不方便,知网的文献不能下载,只能看到摘要。但是我校购买了知网数据库,使用学校ip可以直接下载知网文献,遂上阳光服务平台准备咨询是否提供vpn连接到校内网供学生查询文献。然后突发奇想,使用python编写了个爬虫把阳光服务平台数据爬下来做数据分析。爬虫部分代码就不帖出来了,让我们一起来看下数据分析。

查看更多