一.前言 JVM有Client和Server两种运行模式.不同的模式对应不同的应用场景,而JVM也会有相应的优化.本文将记录JVM模式的信息,以便日后查阅. 二.介绍 在$JAVA_HOME/jre/bin下有client和server两个目录,分别代表JVM的两种运行模式.  client运行模式,针对桌面应用,加载速度比server模式快10%,而运行速度为server模式的10分之一.client下默认的堆容量 -Xms1M -Xmx64M   server运行模式,针对服务器应用.ser…
一.前言 JVM有Client和Server两种运行模式.不同的模式对应不同的应用场景,而JVM也会有相应的优化.本文将记录JVM模式的信息,以便日后查阅. 二.介绍 在$JAVA_HOME/jre/bin下有client目录,分别代表JVM的两种运行模式.   client运行模式,针对桌面应用,加载速度比server模式快10%,而运行速度为server模式的10分之一.client下默认的堆容量 -Xms1M -Xmx64M   server运行模式,针对服务器应用.server下默认的堆…
前些日子装了个jdk7试了试,后来做项目需要换成jdk6,安装完jdk6,设置完环境变量后出现问题.运行java -version出现Error: could not open `C:\Program Files\Java\jre7\lib\i586\jvm.cfg'),运行javac -version则是正常的javac 1.6.0_32.google之发现解决办法是删除c:\windows\system32\java,c:\windows\system32\javaw,c:\windows\…
Java 虚拟机规范中说明:所有的对象实例(all class instances)以及数组都要在堆上分配: the heap is the runtime data area from which memory for all class instances and arrays is allocated. 0. 访问修饰符,static,栈内存 Java Error - Illegal Modifier for Parameter - Only final Permitted 函数内的局部变…
前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机,他终归要运行在物理机上 在操作系统中体现出来的也就是一个进程 操作系统会给他分配资源,割一块内存作为他的地盘 class文件是静态的,想要运行程序,JVM需要将class文件中的信息加载到加载到他的地盘 然后处理他可以处理的数据类型的数据   JVM将这块内存按照功能进行了更细的划分,不过终究是一个…
https://mp.weixin.qq.com/s/_hSaI5yMvPTWxvFgl-UItA 小结: 1.根据Java的类加载机制,在同一个ClassLoader中,类是不允许重复的: 2.单例对象不能通过创建新的ClassLoader来“替换”class: 3. 4. 5. [基本功]专栏又更新啦:想不重启JVM,偷天换日,替换掉已经加载的类?想不重启JVM,获知运行时对象的属性?本文将带你了解Java动态追踪技术的来龙去脉,还有依此衍生出的Java诊断神器………
二.Java怎样实现一次编译到处运行(平台无关性) 1.java平台无关性原理 Java源码首先被编译成字节码,再由不同平台的JVM进行解析,JAVA语言在不同的平台上运行时不需要进行重新编译,Java虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令. 2.为什么JVM不直接将源码进行编译成机器码去执行 (1)准备工作太过繁琐 JVM每次进行编译的时候都会对源代码进行各种检查,纠错 (2)兼容性 JVM不仅仅可以给java语言编译成的class文件进行解释,还可以对任何语言,只要是解…
在Java虚拟机规范中将Java运行时数据划分为6种,分别为: PC寄存器(程序计数器) Java栈 堆 方法区 运行时常量池 本地方法栈 一.PC寄存器(程序计数器) PC寄存器(Program Counter Register)严格来说是一个数据结构,它用于保存当前正常执行的程序的内存地址. 线程私有. 每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器.PC寄存器里保存有当前正在执行的JVM指令的地址. 每个线程都需要一个独立的程序计数器,各条线程之间…
我们知道java之所以能够快速崛起一个重要的原因就是其跨平台性,而跨平台就是通过java虚拟机来完成的,java虚拟机属于java底层的知识范畴,即使你不了解也不会影响绝大部分人从事的java应用层的开发,但是如果你了解JVM的底层知识,你就能更加了解java这门语言的本质,从而对你应用层的java程序的性能优化起到很大的帮助(主要是指内存方面的)另外像一些要求比较高的公司可能在面试的时候会问一些JVM相关的知识,如博主在阿里巴巴内推一面的时候就被问到过JVM的内存区域模型(要知道博主目前可是大…
JAVA虚拟机系列文章 http://developer.51cto.com/art/201001/176550.htm Java语言引入了Java虚拟机,具有跨平台运行的功能,能够很好地适应各种Web应用.同时,为了提高Java语言的性能和健壮性,还引入了如垃圾回收机制等新功能,通过这些改进让Java具有其独特的工作原理. 1.Java虚拟机 Java虚拟机(Java Virtual Machine,JVM)是软件模拟的计算机,它可以在任何处理器上(无论是在计算机中还是在其他电子设备中)安全兼…