摘要: 如何提高java程序的性能?如何定位java程序的内存泄露?调整java虚拟机参数是一条必不可少的途径,本文列出一些常用的java虚拟机参数,应该有所帮助。转自sun.com.
阅读全文
摘要: hibernate在给我们带来很多便利性的同时,也给我们多多少少带来了一些麻烦,而这些问题的定位成本可能也会很高。要使用好工具,就要知道工具的优缺点,尤其是缺点要有足够的风险控制。
阅读全文
摘要: Tomcat的整体框架,同时也是最基础的东西。可能很多人一上来就是直接按照文档或者网上的教程配置使用tomcat,但是对这些基础的东西却缺乏了解,一旦出现问题,一律google解决。鄙人窃以为学习当从基础做起,一步一个脚印,定位问题的过程也是一个十分难得的学习的过程。
阅读全文
摘要: 每个Java虚拟机实例都有一个方法区以及一个堆,它们是由该虚拟机实例中所有线程共享的。
当虚拟机装载一个class文件时,它会从这个class文件包含的二进制数据中解析类型信息,然后把这些类型信息放到方法区中;
当程序运行时,虚拟机会把所有该程序在运行时创建的对象都放到堆中;
当每一个新线程被创建时,它都将得到它自己的PC寄存器(程序计数器)以及一个Java栈,如果线程正在执行的是一个java方法(非本地方法),那么PC寄存器的值将总是指示下一条将被执行的指令,而它的Java栈则总是存储该线程中java方法调用的状态—包括它的局部变量,被调用时传进来的参数,它的返回值,以及运算的中间结果等等。而本地方法调用的状态,则是以某种依赖与具体实现的方式存储在本地方法栈中,也可能是在寄存器或者其他某些与特定实现相关的内存中。
Java栈由许多栈帧(stack frme)或者说帧(frame)组成,一个栈帧包含一个方法调用。当线程调用一个Java方法时,虚拟机压入一个新的栈帧到该线程的java栈中,当该方法返回时,这个栈帧被从Java栈中弹出并抛弃。
阅读全文