java高分局
文章平均质量分 92
介绍java的一些高级特性,以及class文件,运行时内存池,GC等的介绍和分析。
褚金辉
java
展开
-
java高分局之JVM命令参数大全(高级垃圾回收选项)
java高分局之JVM命令参数大全(高级垃圾回收选项)这些选项控制Java HotSpot虚拟机怎么进行垃圾回收。 - -XX:+AggressiveHeap java堆最佳化设置。设置多个参数使长时间运行过的任务使用密集的内存分配。 默认这个选项时关闭的,也就是堆不是最佳化。 - -XX:+AlwaysPreTouch 在调用main函数之前,使用所有可用的内存分页。这个选项可以用来测翻译 2015-06-19 16:02:47 · 20984 阅读 · 2 评论 -
java高分局之JVM命令参数大全(高级运行时选项)
java高分局之JVM命令参数大全(高级运行时选项)这些选项控制hotspotVM运行时的行为-XX:+CheckEndorsedAndExtDirs 这个选项将会阻止java命令运行应用,除非没有用到endorsed-standards override机制和扩展机制。这个选项会检查应用是否使用了下面 的机制之一java.ext.dirs或者java.endorsed.dirs属性被设置翻译 2015-06-08 12:04:05 · 12738 阅读 · 2 评论 -
java高分局之JVM命令参数大全(非标准选项)
java高分局之JVM命令参数大全(非标准选项)这些选项是java hotspot虚拟机专有的选项。-X 展示出所有可用的-X选项-Xbatch 禁止后台编译,默认JVM编译方法都是作为一个后台任务,编译完成后解释执行。使用此选项禁用后台编译,在前台编译完成后执行。-Xbootclasspath:path 指定一系列用分号分开的目录、jar、或者zip文件,从中搜索引导类文件,这些文件都翻译 2015-06-05 12:11:57 · 2962 阅读 · 0 评论 -
java高分局之JVM命令参数大全(标准选项)
java高分局之JVM命令参数大全(标准选项)这里的选项是被所有的虚拟机实现的选项。-agentlib:libname[=options]加载指定的本地代理库,在库名称之后是用逗号分开的选项,这些选项用来指定那些库可用。如果-agentlib:foo 这样设置,那么JVM会尝试去加载foo.dll,这个库文件应该在环境变量Path指定的目录下。下面的例子展示了怎样加载堆分析工具(HPROF)库,翻译 2015-06-05 10:06:26 · 2068 阅读 · 0 评论 -
java高分局之JVM命令参数大全(概述)
java高分局之JVM命令参数大全(概述)概要java [options] classname [args]java [options] -jar filename [args]javaw [options] classname [args]javaw [options] -jar filename [args]options:命令行选项,使用空格分割classname:启动类的名称filen翻译 2015-06-05 09:51:56 · 1585 阅读 · 0 评论 -
java高分局之jstack命令使用
java高分局之jstack命令使用此命令用来分析线程栈信息。为了了解此命令,写一段程序如下:package com.test;import java.io.IOException;public class Test { public static void main(String[] args) throws InterruptedException { Monitor mo原创 2015-05-28 15:53:26 · 2945 阅读 · 0 评论 -
java高分局之jmap命令使用
java高分局之jmap命令使用此命令可以用来查看内存信息。实例个数以及占用内存大小C:\Users\Administrator>jmap -histo 4284 > d:/log.txt打开log.txt,文件内容如下: num #instances #bytes class name------------------------------------------原创 2015-05-28 10:31:18 · 3903 阅读 · 0 评论 -
java高分局之jstat命令使用
java高分局之jstat命令使用jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]注意:使用的jdk版本是jdk8.类加载统计:C:\Users\Administrator>jstat -class 2060Loaded Bytes Unloaded Bytes Time 157原创 2015-05-27 17:01:04 · 39638 阅读 · 9 评论 -
java高分局之类热加载(2)
java高分局之类热加载(2)之前写过一篇文章,讨论使用自定义类加载器实现类的热加载。文章地址如下:http://blog.csdn.net/maosijunzi/article/details/45696589这篇文章将要讨论另一种方法实现热加载,这种方法理论上说可以对应用中所有的类进行热加载,但是在实际应用中,我们也不可能对所有的类进行热加载,也都是指定相关的算法类进行热加载。本节所使用的是la原创 2015-05-22 16:12:39 · 3995 阅读 · 0 评论 -
java高分局之实现本地方法
java高分局之实现本地方法什么是本地方法?java中使用native修饰的方法就是本地方法。比如Thread类中的这个方法:public static native Thread currentThread();一个Native Method就是一个java调用非java代码的接口,一般都是由C/C++实现。为什么要使用本地方法?java使用起来非常方便,然而有些层次的任务用java实现起来不容易原创 2015-05-22 14:58:57 · 1541 阅读 · 0 评论 -
java高分局之寻找JVM中的对象
java高分局之寻找JVM中的对象作为一个java程序员是不是经常有这样的疑问:java对象在jvm中什么地方?java对象在JVM里是什么模样的呢?本节我们利用HSDB这个工具来分析一下这两个问题。首先我们写一段代码,如下:public class Main { public static void main(String[] args) { User user = new原创 2015-05-21 12:02:18 · 4531 阅读 · 0 评论 -
java高分局之类热加载
java高分局之类热加载有时候我们会遇到热加载的需求,即在修改了类的代码后,不重启的情况下动态的加载这个类。先介绍一个java的类加载器 之前写过一篇关于类加载器的,请访问此地址:http://blog.csdn.net/maosijunzi/article/details/42555617看到这个问题,我想到有两种方式来实现:(能力有限,不知道还有没有其他的方案)1:把原来的类信息卸载掉,然后重新原创 2015-05-13 18:17:15 · 5969 阅读 · 0 评论 -
java高分局之class文件解析
java高分局之class文件解析class文件的结构这里不再说了,网上有很多资料,也可以看《深入理解Java虚拟机 JVM高级特性与最佳实践》,里面对class文件结构的描述很详细。这里我们主要使用java语言解析自身的class文件内容,代码下载地址: http://download.csdn.net/detail/maosijunzi/8644009 源码: public class T原创 2015-04-29 09:42:59 · 1788 阅读 · 0 评论 -
java高分局之垃圾回收浅析
java高分局之垃圾回收浅析如何确定那些对象应该回收?引用计数器算法 计数器记录对象被引用的次数,如果计数器的值是0,说明没有地方引用此对象,可以被回收。最大的缺点就是不能解决两个对象相互引用的问题。枚举根节点算法 根据根节点(比如静态域等)的引用会找到很多引用链,没有在引用链上的对象可以回收。垃圾回收算法复制算法 把内存一分为二,某个时间只用其中一份内存,当垃圾回收时,把这部分中存活的原创 2015-04-21 11:47:51 · 1336 阅读 · 0 评论 -
java高分局之永久代何去何从?
java高分局之永久代何去何从?永久代也就是我们通常说的方法区。 java8从Hotspot JVM中删除了永久代,所以我们不再需要为永久代设置大小,也就是不用设置PermSize和MaxPermSize。 在java8之前方法区是作为堆的永久代来实现的,启动JVM时我们需要设置永久代的大小,垃圾回收器也要回收这部分区域,而且会抛出内存溢出异常。借鉴于JRockit虚拟机,java8之后 Hot原创 2015-04-20 18:13:51 · 3806 阅读 · 0 评论 -
java高分局之并行流的缩减操作
java高分局之并行流的缩减操作直接看代码,解释在代码注释中。package java8.lambda;import java.util.ArrayList;import java.util.List;/** * @author chuer * @Description: 注意java的版本必须是8 * @date 2015年4月20日 下午4:37:05 * @version V1.原创 2015-04-20 17:03:35 · 1854 阅读 · 0 评论 -
java高分局之运行时数据区
java高分局之运行时数据区java虚拟机定义了几种不同的运行时数据区。有些数据局在虚拟机启动的时候创建,在虚拟机退出的时候销毁,另外一些是每个线程的数据区,当线程创建的时候创建,当线程撤销的时候销毁。PC寄存器java虚拟机可以支持多个线程同时执行,每个虚拟机线程都有自己的pc寄存器(也叫程序计数器)。在某一个时刻,每个虚拟机线程都会执行单个方法的代码,这个方法我们叫他线程的当前方法。如果这个方法原创 2015-04-20 16:28:41 · 1674 阅读 · 0 评论 -
java高分局之jvm指令浅析
java高分局之jvm指令浅析几个简单的指令iconst:是把常量池中的值加载到操作数栈,比如:iconst_1把第一个常量加载到操作数栈。ipush:这个指令和iconst_的功能相同,是指把常量n加载到操作数栈,n是作为参数传给ipush指令,n代表具体的常量值。iload:把局部变量表中第n个变量加载到操作数栈。istore:把操作数栈顶元素存入第n个局部变量。iadd:把操作数栈顶原创 2015-04-16 12:09:37 · 2036 阅读 · 0 评论