`
yde986
  • 浏览: 98113 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
     在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto binding) 。     ★ 静态绑定机制 //被调用的类 package hr.test; class Father{ public static void f1(){ System.out.println("Father— f1()"); } } //调用静态方法 import ...
代理(Proxy)实际上是一种设计模式。代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。   代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。 真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。  //抽象角色 ...
(1)  什么是JDBC?       数据库供应商为自己的数据库产品各自设计了不同的协议。Sun公司想让Java应用程序能够跨数据库运行,提出了JDBC。说白了,JDBC就是Java为与数据库连接提供的一套标准通信技术(也有人认为,JDBC是Java连接数据库的API)。 有了它,我们所写的Java程序就可以很容易的不受具体数据库供应商的限制了。   (2) JDBC设计       Sun公司为了Java应用程序能与各种数据库正常通信,设计了一套标准数据库通信协议。                                                   简单 ...
我们都知道,Java序列化可以让我们记录下运行时的对象状态(对象实例域的值),也就是我们经常说的对象持久化 。这个过程其实是非常复杂的,这里我们就好好理解一下Java的对象序列化。   1、首先我们要搞清楚,Java对象序列化是将 对象的实例域数据( 包括private私有域) 进行持久化存储。而并非是将整个对象所属的类信息进行存储。 其实了解JVM的话,我们就能明白这一点了。实际上堆中所存储的对象包含了实例域数据值以及指向类信息的地址,而对象所属的类信息却存放在方法区中。当我们要对持久层数据反序列化成对象的时候,也就只需要将实例域数据值存放在新创建的对象中即可。   2、我们都知道凡要 ...
      软件开发中一个古老的说法是:80%的工作使用20%的时间。80%是指检查和处理错误所付出的努力。在许多语言中,编写检查和处理错误的程序代码很乏味,并使应用程序代码变得冗长。原因之一就是它们的错误处理方式不是语言的一部分。尽管如此,错误检测和处理仍然是任何健壮应用程序最重要的组成部分。       Java 提供了一种很好的机制,用强制规定的形式来消除错误处理过程中随心所欲的因素:异常处理。它的优秀之处在于不用编写特殊代码检测返回值就能很容易地检测错误。而且它让我们把异常处理代码明确地与异常产生代码分开,代码变得更有条理。异常处理也是Java中唯一正式的错误报告机制。      ...
★ 基本数据类型间的转换 1、Java要做到平台无关性,所有的基本数据类型所占的字节数量均是固定的。     boolean ——1/8字节(1 bit)     byte —— 1字节             char —— 2字节         short —— 2字节     in ...
作者:每次上网冲杯Java时,都能看到关于String无休无止的争论。还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸裸的站在我们这些Java色狼面前了。嘿嘿....众所周知,String是由字符组成的串,在程序中使用频率很高。Java中的String是一个类,而并非基本数据类型。 不过她却不是普通的类哦!!!   【镜头1】 String对象的创建       1、关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:String s=new String("Hello world"); 问题是参数"Hello world" ...
讲到Java,很容易就想到程序设计语言。实际上,Java技术包含的内容远不止一种编程语言怎么简单。我们通常说的J2SE(java 2 标准版)就是在全局上对Java技术的一种称呼。 1、J2SE技术体系结构 下图包含了J2SE体系结构的全部重大 ...
众所周知,Java源代码被编译器编译成class文件。而并不是底层操作系统可以直接执行的二进制指令(比如Windows OS的.exe文件)。因此,我们需要有一种平台可以解释class文件并运行它。而做到这一点的正是Java 虚拟机(JVM)。   实际上,JVM是一种解释执行class文件的规范技术。各 个提 供商都可以根据规范,在不同的底层平台上实现不同的JVM。   下面是JVM实现的基本结构框图。其中类装载子系统、运行时数据区、执行引擎等 是JVM的必须要解决的几大问题。 ★ 类装载器子系统 在JVM中,类装载器子系统负责查找并装载Class文件。关于这部分的装载细节详见《 ...
当JVM运行Java程序的时候,它会加载对应的class文件,并提取class文件中的信息存放在JVM开辟出来的方法区 内存中。那么这个class文件里面到底有些什么内容呢?   一、class文件内容概述   class文件是由8bits的字节流组成,全部 ...
数据类型     Java虚拟机中,数据类型可以分为两类:基本类型 和引用类型 。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身, ...
1、引用计数收集器 (Reference Counting)         引用计数是垃圾收集的早期策略。在这种方法中,堆中每一个对象都有一个引用计数。一个对象被创建了,并且指向该对象的引用被分配给一个变量,这个对象的引用计数被置为1。当任何其他变量被赋值为对这个对象的引用时,计数加1。当一个对象的引用超过了生存期或者被设置一个新的值时,对象的引用计数减1。任何引用计数为0的对象可以被当作垃圾收集。当一个对象被垃圾收集的时候,它引用的任何对象计数值减1。 在这种方法中,一个对象被垃圾收集后可能导致后续其他对象的垃圾收集行动。      这种方法的好处是,引用计数收集器可以很快地执行,交织 ...
为什么要分代     分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的 。 因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。       在Java程序运行的过程中,会产生大量 ...
垃圾回收的瓶颈     传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很 ...
以下配置主要针对分代垃圾回收算法而言。 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型设置: java -Xmx3550m -Xms3550m -Xmn2g –Xss128k -Xmx3550m: 设置JVM最大可用内存为3550M。 -Xms3550m: 设置JVM促 ...
Global site tag (gtag.js) - Google Analytics