由于线程停在某个无法进行垃圾回收的点(可能是因为已对代码进行了优化),因此无法计算表达式的值...

本文介绍了一个关于构造器参数过多导致的异常问题及其解决方案。在开发WEB服务接入时,作者遇到了一个特殊的接口问题,经过排查发现是由于构造器参数过多所引起的。最终通过减少构造器参数数量解决了该问题。

由于线程停在某个无法进行垃圾回收的点(可能是因为已对代码进行了优化),因此无法计算表达式的值.

先说下我出现这个异常情况的条件:我是在做WEB服务接入时,发生的,为了调用接口的方法,我先封装了一次,封装方法有2个参数,都是类类型。其它的这种方法都可以,只有这一个接口不通过。例如这个封装的方法叫M1,那它是这样的M1(class1 c1,class2 c2),其中在调用它时,c1,c2都是正常的,属性和字段都有值。但跟踪到这个方法时,通过看c1,c2的值会发现c1,c2中的属性就会有:由于线程停在某个无法进行垃圾回收的点(可能是因为已对代码进行了优化),因此无法计算表达式的值

但字段是好的。当时我想难道是类型属性的问题,又一行一行的检查了一下,发现没有问题啊。于是把两个类中的成员全注释。发现还是有这个问题。

在网上搜索了一些内容,没有任何帮助,都是按情况解决的。不具有通用性。

通过这个例子,看到构造器时,灵光一闪,终于发现了问题所在。原来是构造器的参数过多造成的。这个接口有150多个属性,所以我构造了一个150个参数的构造器。

改过之后,就好了。

所以,出现这个问题,所得经验如下:

1 与计算机系统无关,

2 与vs2008环境无关

3 与vs2008配置项无关

4 检查代码吧,是代码的问题。

转载于:https://www.cnblogs.com/jams742003/p/3656489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值