易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : java

Java中堆内存与栈内存分配浅析

作者: 佚名,  出处:IT专家网, 责任编辑: 谢妍妍, 2010-05-10 13:00
Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
  堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或者对象之后,还可以在栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或者对象,引用变量就相当于是为数组或者对象起的一个名称。引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用, ......

java.lang.OutOfMemoryError: Java heap space

      出现这个错误,搜索到1、修改eclipse.ini;2、添加环境变量JAVA_OPTS=-Xms64m -Xmx512m,3、在run configurations->program arguments增加Xms64m -Xmx512m,均无效。
最后解决办法,在与program arguments一墙之隔的VM arguments中添加Xms64m -Xmx512m搞定。 ......

Java 中的位运算


移位运算符

    包括:
    “>> 右移”;“<< 左移”;“>>> 无符号右移”
例子:
-5>>3=-1
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1111 1111
其结果与 Math.floor((double)-5/(2*2*2)) 完全相同。
-5<<3=-40
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1101 1000
其结果与 -5*2*2*2 完全相同。
5>>3=0
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0000
其结果与 5/(2*2*2) 完全相同。
5<<3=40
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0010 1000
其结果与 5*2*2*2 完全相同。
-5>>>3=536870911     
1111 1111 1111 1111 1111 1111 1111 1011
0001 1111 1111 1111 1111 1111 1111 1111
无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
一个有趣的现象是,把 1 左移 31 ......

Java的工厂模式例子

1. 简单工厂:
(1). 创建输出(Output)接口
package stone;
public interface Output {
    public int MAX_COUNT =10;               // 最多可打印多少条记录
    public void show();                            // 打印
    public void addData(String msg);      // 把要打印的记录加入到打印排序
}
(2). 创建打印机类, 其继承输出接口
package stone;
public class Printer implements Output {
    private String[] data_array= new String[MAX_COUNT];      // 保存要打印信息的数组
    private int dataNum=0;                              ......

简易JAVA获取网页有效邮箱地址

//  简易JAVA获取网页有效邮箱地址 ---by 77
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class solo7 {
 public static void main(String args[]){
  new Win();
 }
}
class Win extends Frame implements ActionListener,Runnable{
 Button button;
 URL url;
 TextField text;
 TextArea area;
 byte b[]=new byte[118];
 Thread thread;
 Win(){
  text=new TextField(20);
  area=new TextArea(12,12);
  button=new Button("确定");
  button.addActionListener(this);
  thread=new Thread(this);
  Panel p=new Panel();
  p.add(new Label("输入网址:"));
  p.add(text);
  p.add(button);
  add(area,BorderLayout.CENTER);
  add(p,BorderLayout.NORTH);
  setBounds(60,60,360,300);
 &nbs ......

android 中java编程的意外事件处理

     不管你信不信,即使多么熟练编程的人员在coding的时候都会出现意想不到的bug。在上篇文章中我曾提到,bug的造成是多个方面的综合结果,有些bug是可以修复的,但是有些逻辑上的bug要修复可不是那么容易的事情,就像我们做错了一件事情,如果不去从根本上改正就会犯更大的错误一样,有时候bug也是一个积累的过程。
     在经历了android上的开发之后,我改变了我最初的想法,让我认识到了即使再简单的开发平台,开发一款产品都需要一个严密的逻辑认证,认证之后再进行开发,不仅能提高代码的生产效率,还能减少很多产品的bug。
    下面是我遇到的一些基本简单的bug,但是修复却花费了一段时间:
(1)android.view.WindowManager$BadTokenException: Unable to add window --
token android.os.BinderProxy@342917f8 is not valid; is your activity
running?
 是由于有activity时依附于另一个activity的,当被依附的activity产生错误的时候,该activity没有了靠山而产生错误。对于这个错误
还没有根本的解决办法,唯一的办法就是改变该activity依附于另一activity的事实,将其放入另一activity。

(2)01- ......
总记录数:6386; 总页数:1065; 每页6 条; 首页 上一页 [132] [133] [134] [135] 136 [137] [138] [139] [140] [141]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号