Tag: jvm

Jasper Print – Java堆空间存储器

我使用Jasper Reports生成报告。 但是我从数据库获得了大量数据。 在执行Jasper打印以填充报表数据时,它会占用大量内存并导致Java堆空间内存问题。 JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, params, dataSource); 这条线需要花费很多时间并且会出错。 请帮帮我,如何摆脱这个问题。 Stackrace : java.lang.OutOfMemoryError: Java heap space at net.sf.jasperreports.engine.fill.JRFillTextField.fill(JRFillTextField.java:691) at net.sf.jasperreports.engine.fill.JRFillElementContainer.fillElements(JRFillElementContainer.java:570) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:390) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:351) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2039) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:771) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportContent(JRVerticalFiller.java:301) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:148) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969) at com.jci.eprt.web.controller.report.ReportController.previewEngineeringReport(ReportController.java:250) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown […]

什么时候执行finalize()?

在一次采访中我被问到,假设JVM在没有使用A类的对象时运行gc。 class A{ //some code here protected void finalize(){ //code here } } 它确保执行finalize()。 我说是 接下来的问题是如果正在使用类A的obj,如果现在JVM运行GC它会执行finalize()。 我说不,它不会执行此finalize(),因为JVM不会收集A的对象。 然而,她没有发表评论,但看起来很失望。 我解释错了吗? 提前致谢

动态可扩展的JVM堆栈

JVM规范表明JVM堆栈可以是固定大小,也可以是动态可扩展的。 -Xss JVM选项允许设置固定大小,如果我没有设置此选项是设置默认值(大约512-2048k),但是如何告诉JVM在需要时动态分配其堆栈? 如果我不能设置动态大小选项,设置一个大的-Xss值(假设20M)实际上为我的JVM中的每个线程分配20MB的内存,还是动态分配的内存将限制为20MB?

如何在命令行上设置JVM字符集?

设置JVM字符集的命令是什么? (另外,查看当前JVM字符集的命令是什么,所以我知道如何在完成后将其重置为默认值) 谢谢,

JNI:从JVM到C ++的回调无法运行

我从C ++程序启动JVM。 C ++代码: JNIEXPORT jobject JNICALL com_javelin_JavelinMarketData_callBackIntoNative(JNIEnv* env, jobject obj, jlong ptr) { std::cout << "com_javelin_JavelinMarketData_callBackIntoNative called" <GetStaticMethodID(helloWorldClass, “main”, “([Ljava/lang/String;)V”); env->CallStaticVoidMethod(helloWorldClass, mainMethod, …); } 然后我需要从java回调的C ++函数: Java代码: native void callBackIntoNative(long ptr); public void onResponse(long param) { System.out.println(“Calling callBackIntoNative()”); callBackIntoNative(param); } 当我运行我的C ++程序时,JVM正确启动,但在打印“Calling callBackIntoNative()”后,会出现以下接受: Exception during callBackIntoNative(): ‘com.javelin.JavelinMarketData.callBackIntoNative(J)V’ java.lang.UnsatisfiedLinkError: com.javelin.JavelinMarketData.callBackIntoNative(J)V 你能帮忙吗?

Java虚拟机堆大小格式作为内存百分比

我在我的应用程序服务器上安装了一个IDBS Spreadsheet服务器,发现它有一个我不熟悉的JVM堆大小的格式。 该文档提到xmx或最大堆大小设置为系统内存的75%。 ini文件中的格式是这样的 -Xms50:1024:1536P -Xmx75:1536P 我在搜索文档时从未见过这种格式。 我可以猜测75表示75%,也许P表示百分比而不是通常的G表示千兆字节而M表示兆字节,但我不确定1536的含义或如何读取xms 3数值。

有没有办法在java应用程序中完全禁用RMI?

在我们的应用程序中,远程过程调用是通过自己的基于netty的命令调度程序系统解决的。 我们有很多模块(大约20个),我想在单独的jvm-s中运行所有模块。 我的问题是,RMI为每个JVM产生大约17个线程。 我根本不需要RMI(据我所知)。 我可以完全禁用jvm的RMI吗? 或者至少以不使用这么multithreading的方式配置它?

使用Java或JVMTI标识当前的JVM

我想确定当前运行的JVM。 在JVMTI文档中描述的函数的最佳情况下,但我找不到任何东西。 我的意思是这样的: VirtualMachine.list()提供: [sun.tools.attach.WindowsAttachProvider@46ae506e: 2440 de.fu.profiler.view.MainFrame… 但它显示所有JVM,而不是当前正在运行的JVM。

Java VM突然没有明显的原因退出

我有一个问题,我的Java程序突然退出,没有任何exception抛出或程序正常完成。 我正在编写一个程序来解决Project Euler的第14个问题 。 这就是我得到的: private static final int INITIAL_CACHE_SIZE = 30000; private static Map cache = new HashMap(INITIAL_CACHE_SIZE); public void main(String… args) { long number = 0; int maxSize = 0; for (long i = 1; i maxSize) { maxSize = size; number = i; } } } private static int size(long i) { […]

我的代码中的内存不足exception

我正在运行代码长时间作为Oracle数据库压力测试的一部分并使用java版本“1.4.2”。 简而言之,我所做的是: while(true) { Allocating some memory as a blob byte[] data = new byte[1000]; stmt = fConnection.prepareStatement(query); // [compiling an insert query which uses the above blob] stmt.execute(); // I insert this blob-row in the database. stmt.close(); } 现在我想运行这个测试8-10小时。 然而,显然在插入大约1500万条记录后,我点击了java.lang.OutOfMemoryError 我用-Xms512m -Xmx2g运行它。 我尝试使用更高的值,但我似乎没有那么多的硬件,我认为它不是req: java -Xms512m -Xmx4g -jar XX.jar Invalid maximum heap size: -Xmx4g The […]