上一篇我们讲述了Java虚拟机的体系结构和内存模型,那么我们就不得不说到内存泄露。大家都知道,Java是从C++的基础上发展而来的,而C++程序的很大的一个问题就是内存泄露难以解决,尽管Java的JVM有一套自己的垃圾回收机制来回收内存,在大多数的情况下并不需要java程序开发人员..
分类:
编程语言 时间:
2015-06-06 23:47:32
阅读次数:
336
首先要了解的数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,l...
分类:
其他好文 时间:
2015-06-06 17:49:10
阅读次数:
176
iPhone系统中的Objective-C的内存管理机制是比较灵活的,即可以拿来像C/C++一样用,也可以加个AutoreleasePool让它升级为半自动化的内存管理语言。当然,也不能拿JAVA虚拟机中的全自动化GC来比?一,引用计数是实例对象的内存回收唯一参考引用计数(retainCount)是...
分类:
其他好文 时间:
2015-06-05 19:20:33
阅读次数:
103
概述偏向锁是JDK 1.6提出的一种锁优化方式,起核心思想是如果程序没有竞争,则取消之前已经取得锁的线程的同步操作。也就是说,某一个锁被一个线程获取之后,便进入了偏向锁模式,当该线程再次请求这个锁时,就无需再进行相关的同步操作,从而节省了操作时间。但是如果在此期间,有其他线程申请了这个锁,则退出偏向锁模式。在JVM中可以使用-XX:+UseBiasedLocking设置启用偏向锁。实验看如下的代码:...
分类:
编程语言 时间:
2015-06-05 15:52:16
阅读次数:
190
概述锁消除是Java虚拟机在JIT编译是,通过对运行上下文的扫描,去除不可能存在共享资源竞争的锁,通过锁消除,可以节省毫无意义的请求锁时间。实验看如下代码:package com.winwill.lock;/**
* @author qifuguang
* @date 15/6/5 14:11
*/
public class TestLockEliminate {
public sta...
分类:
编程语言 时间:
2015-06-05 15:51:02
阅读次数:
273
javascript与java都是编程语言,不同在于代码格式不同;
js基于对象,java是面向对象;
java是强变量,编译前必须作出声明,js是弱变量,使用前不需做声明;
JavaScript 是一种嵌入式脚本文件,直接插入网页,有浏览器一边解释一边执行。
java 语言不一样,他必须在JAVA虚拟机上运行。而且事先需要进行编译。
JAVA的语法规则比JavaScript要严格的多...
分类:
编程语言 时间:
2015-06-05 12:21:24
阅读次数:
135
所谓规范,即指由很多人同时遵守的行为或理论。java的规范并不是指其中一种,而是有很多种,比如java编码规范,java命名规范,java虚拟机规范等等,甚至于一个编码规范都有很多种,不同的公司、组织、个人等等可能各不相同。java标准由于java是有SUN公司发明的,默认是由SUN公司控制具体的标...
分类:
编程语言 时间:
2015-06-05 00:41:39
阅读次数:
148
深入理解Java虚拟机:JVM高级特性与最佳实践 阅读笔记(内存原理、异常处理): 1.???? Jvm运行时,内存划分如图所示: ? 2.???? 程序计数器: ?????? Jvm将这个计数看作当前线程执行某条字节码的...
分类:
编程语言 时间:
2015-06-04 19:39:29
阅读次数:
205
概述jstack可用于导出java运用程序的线程堆栈,其基本使用语法为:
jstack [-l] pid
-l 选项用于打印锁的额外信息。使用示例下面这段代码运行之后会出现死锁现象(因为线程1持有lock1,在等待lock2,线程2持有lock2在等待lock1,造成了循环等待,形成死锁):package com.winwill.deadlock;/**
* @author qifuguang...
分类:
Web程序 时间:
2015-06-04 19:33:17
阅读次数:
140
概述在JDK 1.7之后,新增了一个命令行工具jcmd。它是一个多功能工具,可以用来导出堆,查看java进程,导出线程信息,执行GC等。使用示例下面这个命令能够列出当前运行的所有虚拟机:参数-l表示列出所有java虚拟机,针对每一个虚拟机,可以使用help命令列出该虚拟机支持的所有命令,如下图所示,以21024这个进程为例:查看虚拟机启动时间VM.uptime打印线程栈信息Thread.print查...
分类:
其他好文 时间:
2015-06-04 19:29:52
阅读次数:
207