jvm

JVM运行时数据区的内存模型由五部分组成: 【1】方法区 【2】堆 【3】JAVA栈 【4】PC寄存器 【5】本地方法栈   常量池是属于类型信息的一部分,类型信息也就是每一个被转载的类型,这个类型反映到JVM内存模型中是对应存在于JVM内存模型的方法区中,也就是这个类型信息中的常量池概念是存在于在方法区中,而方法区是在JVM内存模型中的堆中由JVM来分配的。     javac 把源码整成字节码 java 时,首先把…

使用 VS + SOS.dll 调试托管程序

  Visual Studio 作为一种强大的开发平台,已经提供了非常多的调试手段。但这些调试手段相对来说还是停留在表面上,无非是设置断点、变量查看以及调用堆栈列表等。某些时候我们希望了解更多的东西,尤其是那些被隐藏到背后和运行期的东西,诸如对象运行状态、内存分布等等,这些相对底层的知识可以让我们更好地理解 .NET CLR / JIT 的一些行为。当然,并不是所有人都需要了解这些知识,毕竟汇编和高级…

java Class和加载机制精华一页纸

Java 是一个解释型语言(使用了JIT后, 也有变成本地机器码的, 但一般意义上都是先预编译成字节码, 解释执行),那字节码里面包含了那些?解释的过程如何? 1、Class 字节码 I、基本信息 Class识别、版本信息 II、常量池 类似TLV表述的结构,数据类型主要是用 U1、U2 ... (对应 1,2,4,8个字节)的无符号数。 常量池并不是指类里面的常量,而是类里面所有名称和限定符(字面常量、编译常量) 因为,class中…

JVM加载class文件的原理机制

Java 语言是一种具有动态性的解释型编程语言,当指定程序运行的时候, Java 虚拟机就将编译生成的 . class 文件按照需求和一定的规则加载进内存,并组织成为一个完整的 Java 应用程序。 Java 语言把每个单独的类 Class 和接口 Implements 编译成单独的一个 . class 文件,这些文件对于 Java 运行环境来说就是一个个可以动态加载的单元。正是因为 Java 的这种特性,我们可以在不重新编译其它代码的情况…

Java基础知识点总结二

  26.  Java中的异常处理机制的简单原理和应用?答:当JAVA 程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关…

打包jar方法

未分类 , , , , , 发表评论
运行jar包解决方案 2006年08月18日 星期五 下午 07:01 当用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,你会发现如何设置-classpath参数应用程序都找不到相应的第三方类,报 ClassNotFound错误。实际上这是由于当使用-jar参数运行的时候,java VM会屏蔽所有的外部classpath,而只以本身yourJarExe.jar的内部class作为类的寻找范围。 **解决方案** 一 BootStrap class扩展方案 Java …

自解压的jar实现原理

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>   自解压的jar实现原理作者:Turbo Chen日期:2004/2/8    在网络上,有些java程序的提供者将他们的java安装程序打包成一个jar文件的形式。当运行时,自动将jar中的程序解压出来安装到使用者的电脑上。他们是如何做到这些的呢?现在我们就来解开这个迷,让大家了解如果制作这…

自解压的jar实现原理

自解压的jar实现原理 作者:Turbo Chen 日期:2004/2/8     在网络上,有些java程序的提供者将他们的java安装程序打包成一个jar文件的形式。当运行时,自动将jar中的程序解压出来安装到使用者的电脑上。他们是如何做到这些的呢?现在我们就来解开这个迷,让大家了解如果制作这样的jar文件。     首先,我们来回忆一下,以前我们打包jar时,通常将class程序要用到的资源如*.gif图片、*.xml配置文件等都…

利用classloader动态加载jar包

第一种方法: URL url= file.toURI().toURL();//将File类型转为URL类型,file为jar包路径 URLClassLoader urlClassLoader=new URLClassLoader(new URL[] {url}); Class c=urlClassLoader.loadClass("类名");此种方法是构造一个新的URLClassLoader对象,利用该对象加载指定路径下的jar包,此种方法只能在此处加载该jar包中的类,调用其方法,不能在程序中的其他地方调用。如果将urlClassLoader声明为…

如何读取JAR包中的资源文件(如XML、TXT等)

如何读取 JAR 包中的资源文件(如 XML 、 TXT 等)? getResource 和 getResourceAsStream   问题的根源还是在于老生常谈的所谓 class path ,不信的话你在系统环境变量里的 ClassPath 加上你的 jar 文件,这下你就看得到你的图片了!但单独发布 jar 的话不可能指望每次都让用户为你的 jar 而专门修改 classpath 。那么有没有什么办法一劳永逸地搞定它呢?我们需要从类的装载入手。先扯远一点,在开…

JVM类加载

  ClassLoader如何加载class 。    jvm里有多个类加载,每个类加载可以负责加载特定位置的类,    例如,bootstrap类加载负责加载jre/lib/rt.jar中的类,     我们平时用的jdk中的类都位于rt.jar中。extclassloader负责加载jar/lib/ext/*.jar中的类,    appclassloader负责classpath指定的目录或jar中的类。除了bootstrap之外,    其他的类加载器本身也都是java类,它们的父类是ClassLoader。

“java程序打成jar包 如何处理第三方jar包”

======================================================注:本文源代码点此下载 ======================================================eclipse的export的 runnable jar file 导出的jar包的形式应该可以避免这个问题,直接想所依赖的jar里的class文件也一并打入jar包里了。 问题一: 现在有一j2se程序,依赖于jdk1.5、poi.jar、commons-lang.jar。 打成jar包后,依赖于jdk的部分代码是可以执行的。但…

用 One-JAR 简化应用程序交付-用定制类装入器促进编程

. Simon Tuffs (simon@simontuffs.com), 独立顾问, simontuffs.com2004 年 11 月 23 日 如果您曾经试图把 Java 应用程序交付为单一的 Java 档案文件(JAR 文件),那么您很有可能遇到过这样的需求:在构建最终档案文件之前,要展开支持 JAR 文件(supporting JAR file)。这不但是一个开发的难点,还有可能让您违反许可协议。在本文中,Tuffs 向您介绍了 One-JAR 这个工具,它使用定制的类装入器,动…

Java ClassLoader基础及加载不同依赖 Jar 中的公共类

Java ClassLoader基础及加载不同依赖 Jar 中的公共类 本文主要介绍 ClassLoader 的基础知识,ClassLoader 如何动态加载 Jar,ClassLoader 隔离问题及如何加载不同 Jar 中的公共类。 本文工程开源地址见:Java Dynamic Load Jar@Github,Clone 以后直接以 Java Application去运行 java-dynamic-loader-host 工程即可。 其实本文只是 Android 插件化的一个引子,做过 Android 插件化的同学,可以试试对…

如何在jar包中访问外面的资源文件

未分类 , , , , , 发表评论
使用java -jar xxx.jar执行java程序时,When you use this option(-jar), the JAR file is the source of all user classes, and other user class path settings are ignored.所以在jar包中无法访问外部的资源文件。要解决这个文件,可以实现一个代理和自己的ClassLoader,由代理负责加载xxx.jar所需要的资源