1、JVM的结构: JVM主要由类加载器子系统、运行时数据区(内存空间)、执行引擎以及本地方法接口等组成。其中运行时数据区又由方法区、堆、Java栈、PC寄存器、本地方法栈组成。 从上图中还可以看出,在内存空间中方法区和堆是所有Java线程共享的,而Java栈、本地方法栈、PC寄存器则由每个线程私有 ...
分类:
编程语言 时间:
2016-10-02 00:20:03
阅读次数:
248
1.资源对象没关闭造成的内存泄漏描述:资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内... ...
分类:
移动开发 时间:
2016-10-01 22:29:13
阅读次数:
461
1,JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。 而这个过程 ...
分类:
其他好文 时间:
2016-10-01 19:52:11
阅读次数:
198
java源代码(符合语言规范)-->javac-->.class(二进制文件)-->jvm-->机器语言(不同平台不同种类) 如何让java的语法规则适应java虚拟机的语法规则?这个任务由javac编译器来完成java语言规范转换成java虚拟机语言规范。 编译流程: 流程: 词法分析器:将源码转 ...
分类:
编程语言 时间:
2016-10-01 17:02:13
阅读次数:
224
定义:通过拷贝一个已经存在的实例来返回新的实例,而不是新建实例。被拷贝的实例就称为原型。 类图 原型类实现思路 (1)实现Cloneable接口。(在Java虚拟机中,只有实现了这个接口的类才可以被拷贝。) (2)重写Object类中的clone方法。(作用是返回对象的一个拷贝,但其作用域是prot ...
分类:
其他好文 时间:
2016-09-30 14:46:24
阅读次数:
168
在第一次的词频统计中,对JProfile 款软件不是很熟悉,感觉数据不是很准确,在程序启动时JProfile总是提示Java虚拟机已退出,后来经过查阅知道解决方案:截图如下 要将 keep vm alive 勾选上。 程序总体总体情况如下: 当程序运行之后,cpu和内存的使用几乎在同一时间有一个明显 ...
分类:
其他好文 时间:
2016-09-28 22:32:16
阅读次数:
153
当我们在启动tomcat服务的时候报错信息:java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bin 分析:从错误信息中我们可以看到是socket java虚拟机报错凭经验这个一般是端口被占用引起的 解决方案: ...
标记-清除算法: 这是最基础的,就是之前所讲的两次标记,首先标记出所有 需要回收的对象,然后进行统一清除, 这有两缺点:一是效率低,标记和清除(开启低优先级进行回收)都是低效率的。第二是空间问题,标记清除会产生大量的内存碎片。 复制算法: 可以将内存分为大小相等的两块,每次只使用一块,当一快内存使用 ...
分类:
编程语言 时间:
2016-09-26 21:41:51
阅读次数:
156
强引用: 类似:object A=new Object();这样的引用,只要强引用还存在,垃圾回收期就永远不会回收被引用的对象,eg:这里的new Oject(). 软引用: 一些还有用,但是非必需的的对象,对于软引用关联的对象,在系统将要发生内存泄漏之前,将会把这些对象列入回收范围,并进行二次回收 ...
分类:
编程语言 时间:
2016-09-26 21:38:13
阅读次数:
164
在java虚拟机中并没有规范规定需要对方法区即是新生代进行垃圾回收, 主要是这些区域的回收性价比极低, 一般在新生代中一般垃圾回收中可以达到70%到95%。 其中永久代中的垃圾回收主要回收的是两个部分, 一个部分是废弃的常量,判断一个常量是否废弃, 主要看这个常量在其他地方是否引用了这个字面量。 否 ...
分类:
编程语言 时间:
2016-09-26 21:28:23
阅读次数:
115